# HG changeset patch # User Paul LEROY # Date 2014-02-18 06:35:47 # Node ID 154b9d6ee0fcc8499fdc99504cda7676fa2611ac # Parent 6bfd3f59df14f04099d412392e5d52701dd557c1 Sync diff --git a/.hgignore b/.hgignore --- a/.hgignore +++ b/.hgignore @@ -6,5 +6,6 @@ syntax: glob *.so.1.0.0 *~ *moc_* +*.pro.user* gse_lesia/lfrsgse diff --git a/clock.png b/clock.png new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..57bc90117f7f8869994e67f97ec34ef57f142464 GIT binary patch literal 22363 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 Rb7TX6$(_3fb$TxG{{to{BSioJ diff --git a/gse_lesia/contacts.xml b/gse_lesia/contacts.xml deleted file mode 100644 --- a/gse_lesia/contacts.xml +++ /dev/null @@ -1,1 +0,0 @@ -kamleshkamleshkamleshkamleshkamlesh diff --git a/gse_lesia/gselesia.pro.user b/gse_lesia/gselesia.pro.user --- a/gse_lesia/gselesia.pro.user +++ b/gse_lesia/gselesia.pro.user @@ -1,6 +1,6 @@ - + ProjectExplorer.Project.ActiveTarget diff --git a/gse_lesia/lfrsgse b/gse_lesia/lfrsgse index 5827d331eee43fe81ca6ea83c0f832510683a25b..046c622458ae4a0935b7081bae6568d17d5b9b72 GIT binary patch literal 5252779 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

*zn?UVz^~{}Fcs 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

0w6l29o?*%_4!-BZfyOfiZ#6ok+5L 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%0AFP)>e!UVd*k7i-|3xh) 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

>vCOYyoMqH|GVf=*|t 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%0D?wG<47fu|lHINQ7*a9} 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

Wuv|hvu=A%+d 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�bhpTg$2J5 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 =H1a*y8+U3syFaPtP*#;X1c)UZ6<$o^p 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�iQAw-vM9E(yF*O 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 mkgT-z( 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

huW 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%0A;seT36$ortfd6&L}Po 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%0DL-G31|nWx>&N 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

  • @&dUIp%GqBK6t4_i&)i5brhS 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

    md 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 z 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

    7`}v1&=fO^7It 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 z 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%0A)0l~nR&du0ILBikEWNBhYz23fOf-<486dbH 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π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 C$#p*f diff --git a/gse_lesia/mainwindow.cpp b/gse_lesia/mainwindow.cpp --- a/gse_lesia/mainwindow.cpp +++ b/gse_lesia/mainwindow.cpp @@ -16,10 +16,11 @@ MainWindow::MainWindow(QWidget *parent) wfPacketNormal[0] = new WFPacket(0, 2048); wfPacketNormal[1] = new WFPacket(0, 2048); wfPacketNormal[2] = new WFPacket(0, 2048); - wfPacketNormal[3] = new WFPacket(0, 2372); - wfPacketBurst = new WFPacket(0, 2372); - wfPacketSBM1 = new WFPacket(0, 2372); - wfPacketSBM2 = new WFPacket(0, 2372); + wfPacketNormal[3] = new WFPacket(0, 2688); + wfPacketBurst = new WFPacket(0, 2688); + wfPacketSBM1 = new WFPacket(0, 2688); + wfPacketSBM2 = new WFPacket(0, 2688); + wfPacketCWF_F3 = new WFPacket(0, 2688); //**** // XML @@ -96,6 +97,7 @@ MainWindow::~MainWindow() delete wfPacketBurst; delete wfPacketSBM1; delete wfPacketSBM2; + delete wfPacketCWF_F3; } void MainWindow::displayNetworkInterfaces() @@ -269,7 +271,7 @@ void MainWindow::buildWFAndDisplay_SWF(T unsigned int pa_lfr_swf_blk_nr = 0; static unsigned int coarseTime = 0; static unsigned int fineTime = 0; - float deltaT; + double deltaT; unsigned int nbData; switch(num_page) @@ -321,22 +323,36 @@ void MainWindow::buildWFAndDisplay_SWF(T } } -void MainWindow::buildWFAndDisplay_CWF_LONG_F3(TMPacketToRead *packet, WFPacket *wfPacket, unsigned char num_page) +void MainWindow::buildWFAndDisplay_CWF_LONG_F3(TMPacketToRead *packet, WFPacket *wfPacket) { unsigned int i = 0; unsigned int j = 0; unsigned char *data; static unsigned char pkt_nr = 1; unsigned int blk_nr = 0; - unsigned int coarseTime; - unsigned int fineTime; - float deltaT; + static unsigned int coarseTime; + static unsigned int fineTime; + unsigned int tmpCoarseTime; + unsigned int tmpFineTime; + double deltaT; + double DELTA; unsigned int nbData; - deltaT = 1 / 16; + deltaT = 1 / 16.; - coarseTime = ((packet->Value[22] & 0x7f) << 24) + (packet->Value[23] << 16) + (packet->Value[24] << 8) + packet->Value[25]; - fineTime = (packet->Value[26] << 8) + packet->Value[27]; + if (pkt_nr == 1) // the acquisition time of the first packet of the snapshot is taken as starting time + { + tmpCoarseTime = coarseTime; + tmpFineTime = fineTime; + coarseTime = ((packet->Value[22] & 0x7f) << 24) + + (packet->Value[23] << 16) + + (packet->Value[24] << 8) + + packet->Value[25]; + fineTime = (packet->Value[26] << 8) + packet->Value[27]; + DELTA = (coarseTime + fineTime * 1. / 65536.) + - (tmpCoarseTime + tmpFineTime * 1. / 65536); + displayOnConsole( "DELTA = " + QString::number(DELTA, 'f', 10) ); + } blk_nr = packet->Value[28] * 256 + packet->Value[29]; // PA_LFR_CWFL3_BLK_NR data = &packet->Value[30]; // start of the first data block; @@ -350,35 +366,49 @@ void MainWindow::buildWFAndDisplay_CWF_L wfPacket->wf_b3[j + i] = (short) ( (data[ (i * BLK_SIZE) + 10] << 8) + (data[ (i*BLK_SIZE) + 11]) ); } pkt_nr = pkt_nr + 1; - if (pkt_nr == 8) + if (pkt_nr == (NB_PACKETS_PER_GROUP_OF_CWF+1)) { nbData = j + blk_nr; - this->UI->wfDisplay->displayOnPlot(wfPacket->wf_v, num_page, 0, coarseTime, fineTime, deltaT, nbData); - this->UI->wfDisplay->displayOnPlot(wfPacket->wf_e1, num_page, 1, coarseTime, fineTime, deltaT, nbData); - this->UI->wfDisplay->displayOnPlot(wfPacket->wf_e2, num_page, 2, coarseTime, fineTime, deltaT, nbData); - this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b1, num_page, 3, coarseTime, fineTime, deltaT, nbData); - this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b2, num_page, 4, coarseTime, fineTime, deltaT, nbData); - this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b3, num_page, 5, coarseTime, fineTime, deltaT, nbData); + this->UI->wfPage_CWF_F3->displayOnPlot(wfPacket->wf_v, 0, coarseTime, fineTime, deltaT, nbData); + this->UI->wfPage_CWF_F3->displayOnPlot(wfPacket->wf_e1, 1, coarseTime, fineTime, deltaT, nbData); + this->UI->wfPage_CWF_F3->displayOnPlot(wfPacket->wf_e2, 2, coarseTime, fineTime, deltaT, nbData); + this->UI->wfPage_CWF_F3->displayOnPlot(wfPacket->wf_b1, 3, coarseTime, fineTime, deltaT, nbData); + this->UI->wfPage_CWF_F3->displayOnPlot(wfPacket->wf_b2, 4, coarseTime, fineTime, deltaT, nbData); + this->UI->wfPage_CWF_F3->displayOnPlot(wfPacket->wf_b3, 5, coarseTime, fineTime, deltaT, nbData); pkt_nr = 1; } } -void MainWindow::buildWFAndDisplay_CWF_F3_light(TMPacketToRead *packet, WFPacket *wfPacket, unsigned char num_page) +void MainWindow::buildWFAndDisplay_CWF_F3_light(TMPacketToRead *packet, WFPacket *wfPacket) { unsigned int i = 0; unsigned int j = 0; unsigned char *data; static unsigned char pkt_nr = 1; unsigned int blk_nr = 0; - unsigned int coarseTime; - unsigned int fineTime; - float deltaT; + static unsigned int coarseTime; + static unsigned int fineTime; + unsigned int tmpCoarseTime; + unsigned int tmpFineTime; + double deltaT; + double DELTA; unsigned int nbData; - deltaT = 1 / 16; + deltaT = 1 / 16.; - coarseTime = ((packet->Value[22] & 0x7f) << 24) + (packet->Value[23] << 16) + (packet->Value[24] << 8) + packet->Value[25]; - fineTime = (packet->Value[26] << 8) + packet->Value[27]; + if (pkt_nr == 1) // the acquisition time of the first packet of the snapshot is taken as starting time + { + tmpCoarseTime = coarseTime; + tmpFineTime = fineTime; + coarseTime = ((packet->Value[22] & 0x7f) << 24) + + (packet->Value[23] << 16) + + (packet->Value[24] << 8) + + packet->Value[25]; + fineTime = (packet->Value[26] << 8) + packet->Value[27]; + DELTA = (coarseTime + fineTime * 1. / 65536.) + - (tmpCoarseTime + tmpFineTime * 1. / 65536); + displayOnConsole( "DELTA = " + QString::number(DELTA, 'f', 10) ); + } blk_nr = packet->Value[28] * 256 + packet->Value[29]; // PA_LFR_CWF3_BLK_NR data = &packet->Value[30]; // start of the first data block; @@ -392,15 +422,15 @@ void MainWindow::buildWFAndDisplay_CWF_F wfPacket->wf_b3[j + i] = 0; } pkt_nr = pkt_nr + 1; - if (pkt_nr == 4) + if (pkt_nr == (NB_PACKETS_PER_GROUP_OF_CWF_LIGHT+1)) { nbData = j + blk_nr; - this->UI->wfDisplay->displayOnPlot(wfPacket->wf_v, num_page, 0, coarseTime, fineTime, deltaT, nbData); - this->UI->wfDisplay->displayOnPlot(wfPacket->wf_e1, num_page, 1, coarseTime, fineTime, deltaT, nbData); - this->UI->wfDisplay->displayOnPlot(wfPacket->wf_e2, num_page, 2, coarseTime, fineTime, deltaT, nbData); - this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b1, num_page, 3, coarseTime, fineTime, deltaT, nbData); - this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b2, num_page, 4, coarseTime, fineTime, deltaT, nbData); - this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b3, num_page, 5, coarseTime, fineTime, deltaT, nbData); + this->UI->wfPage_CWF_F3->displayOnPlot(wfPacket->wf_v, 0, coarseTime, fineTime, deltaT, nbData); + this->UI->wfPage_CWF_F3->displayOnPlot(wfPacket->wf_e1, 1, coarseTime, fineTime, deltaT, nbData); + this->UI->wfPage_CWF_F3->displayOnPlot(wfPacket->wf_e2, 2, coarseTime, fineTime, deltaT, nbData); + this->UI->wfPage_CWF_F3->displayOnPlot(wfPacket->wf_b1, 3, coarseTime, fineTime, deltaT, nbData); + this->UI->wfPage_CWF_F3->displayOnPlot(wfPacket->wf_b2, 4, coarseTime, fineTime, deltaT, nbData); + this->UI->wfPage_CWF_F3->displayOnPlot(wfPacket->wf_b3, 5, coarseTime, fineTime, deltaT, nbData); pkt_nr = 1; } } @@ -410,19 +440,32 @@ void MainWindow::buildWFAndDisplay_CWF_F unsigned int i = 0; unsigned int j = 0; unsigned char *data; - unsigned char *pData; static unsigned char pkt_nr = 1; unsigned int blk_nr = 0; - unsigned int coarseTime; - unsigned int fineTime; - float deltaT; + static unsigned int coarseTime; + static unsigned int fineTime; + unsigned int tmpCoarseTime; + unsigned int tmpFineTime; + double deltaT; + double DELTA; unsigned int nbData; - deltaT = 1 / 4096; + deltaT = 1. / 4096.; - coarseTime = ((packet->Value[22] & 0x7f) << 24) + (packet->Value[23] << 16) + (packet->Value[24] << 8) + packet->Value[25]; - fineTime = (packet->Value[26] << 8) + packet->Value[27]; - blk_nr = packet->Value[28] * 256 + packet->Value[29]; // PA_LFR_CWF3_BLK_NR + if (pkt_nr == 1) // the acquisition time of the first packet of the snapshot is taken as starting time + { + tmpCoarseTime = coarseTime; + tmpFineTime = fineTime; + coarseTime = ((packet->Value[22] & 0x7f) << 24) + + (packet->Value[23] << 16) + + (packet->Value[24] << 8) + + packet->Value[25]; + fineTime = (packet->Value[26] << 8) + packet->Value[27]; + DELTA = (coarseTime + fineTime * 1. / 65536.) + - (tmpCoarseTime + tmpFineTime * 1. / 65536); + displayOnConsole( "DELTA = " + QString::number(DELTA, 'f', 10) ); + } + blk_nr = packet->Value[28] * 256 + packet->Value[29]; // PA_LFR_CWF_BLK_NR data = &packet->Value[30]; // start of the first data block; j = (pkt_nr-1) * BLK_NR_CWF; @@ -432,13 +475,10 @@ void MainWindow::buildWFAndDisplay_CWF_F wfPacket->wf_e2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 4] << 8) + (data[ (i*BLK_SIZE) + 5]) ); wfPacket->wf_b1[j + i] = (short) ( (data[ (i * BLK_SIZE) + 6] << 8) + (data[ (i*BLK_SIZE) + 7]) ); wfPacket->wf_b2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 8] << 8) + (data[ (i*BLK_SIZE) + 9]) ); -// wfPacket->wf_b3[j + i] = (short) ( (data[ (i * BLK_SIZE) + 10] << 8) + (data[ (i*BLK_SIZE) + 11]) ); - pData = (unsigned char*) &wfPacket->wf_b3[j + i]; - pData[0] = data[ (i*BLK_SIZE) + 11]; - pData[1] = data[ (i*BLK_SIZE) + 10]; + wfPacket->wf_b3[j + i] = (short) ( (data[ (i * BLK_SIZE) + 10] << 8) + (data[ (i*BLK_SIZE) + 11]) ); } pkt_nr = pkt_nr + 1; - if (pkt_nr == 8) + if (pkt_nr == (NB_PACKETS_PER_GROUP_OF_CWF+1)) { nbData = j + blk_nr; this->UI->wfPage_CWF_F1->displayOnPlot(wfPacket->wf_v, 0, coarseTime, fineTime, deltaT, nbData); @@ -458,15 +498,29 @@ void MainWindow::buildWFAndDisplay_CWF_F unsigned char *data; static unsigned char pkt_nr = 1; unsigned int blk_nr = 0; - unsigned int coarseTime; - unsigned int fineTime; - float deltaT; + static unsigned int coarseTime; + static unsigned int fineTime; + unsigned int tmpCoarseTime; + unsigned int tmpFineTime; + double deltaT; + double DELTA; unsigned int nbData; - deltaT = 1 / 256; + deltaT = 1. / 256.; - coarseTime = ((packet->Value[22] & 0x7f) << 24) + (packet->Value[23] << 16) + (packet->Value[24] << 8) + packet->Value[25]; - fineTime = (packet->Value[26] << 8) + packet->Value[27]; + if (pkt_nr == 1) // the acquisition time of the first packet of the snapshot is taken as starting time + { + tmpCoarseTime = coarseTime; + tmpFineTime = fineTime; + coarseTime = ((packet->Value[22] & 0x7f) << 24) + + (packet->Value[23] << 16) + + (packet->Value[24] << 8) + + packet->Value[25]; + fineTime = (packet->Value[26] << 8) + packet->Value[27]; + DELTA = (coarseTime + fineTime * 1. / 65536.) + - (tmpCoarseTime + tmpFineTime * 1. / 65536); + displayOnConsole( "DELTA = " + QString::number(DELTA, 'f', 10) ); + } blk_nr = packet->Value[28] * 256 + packet->Value[29]; // PA_LFR_CWF3_BLK_NR data = &packet->Value[30]; // start of the first data block; @@ -480,7 +534,7 @@ void MainWindow::buildWFAndDisplay_CWF_F wfPacket->wf_b3[j + i] = (short) ( (data[ (i * BLK_SIZE) + 10] << 8) + (data[ (i*BLK_SIZE) + 11]) ); } pkt_nr = pkt_nr + 1; - if (pkt_nr == 8) + if (pkt_nr == (NB_PACKETS_PER_GROUP_OF_CWF+1)) { nbData = j + blk_nr; this->UI->wfPage_CWF_F2->displayOnPlot(wfPacket->wf_v, 0, coarseTime, fineTime, deltaT, nbData); @@ -628,10 +682,10 @@ void MainWindow::preProcessPacket(TMPack buildWFAndDisplay_SWF(packet, wfPacketNormal[2], 2); break; case SID_NORMAL_CWF_F3: - buildWFAndDisplay_CWF_F3_light(packet, wfPacketNormal[3], 3); + buildWFAndDisplay_CWF_F3_light(packet, wfPacketCWF_F3); break; case SID_NORMAL_CWF_LONG_F3: - buildWFAndDisplay_CWF_LONG_F3(packet, wfPacketNormal[3], 3); + buildWFAndDisplay_CWF_LONG_F3(packet, wfPacketCWF_F3); break; case SID_BURST_CWF_F2: buildWFAndDisplay_CWF_F2(packet, wfPacketBurst); diff --git a/gse_lesia/mainwindow.h b/gse_lesia/mainwindow.h --- a/gse_lesia/mainwindow.h +++ b/gse_lesia/mainwindow.h @@ -37,8 +37,8 @@ public: unsigned int getSID(TMPacketToRead *packet, unsigned char pid, unsigned char cat, unsigned char typ, unsigned char sub); // void buildWFAndDisplay_SWF(TMPacketToRead *packet, WFPacket *wfPacket, unsigned char num_page); - void buildWFAndDisplay_CWF_LONG_F3(TMPacketToRead *packet, WFPacket *wfPacket, unsigned char num_page); - void buildWFAndDisplay_CWF_F3_light(TMPacketToRead *packet, WFPacket *wfPacket, unsigned char num_page); + void buildWFAndDisplay_CWF_LONG_F3(TMPacketToRead *packet, WFPacket *wfPacket); + void buildWFAndDisplay_CWF_F3_light(TMPacketToRead *packet, WFPacket *wfPacket); void buildWFAndDisplayBurst(TMPacketToRead *packet, WFPacket *wfPacket); void buildWFAndDisplay_CWF_F1(TMPacketToRead *packet, WFPacket *wfPacket); void buildWFAndDisplay_CWF_F2(TMPacketToRead *packet, WFPacket *wfPacket); @@ -85,6 +85,7 @@ private: WFPacket *wfPacketBurst; WFPacket *wfPacketSBM1; WFPacket *wfPacketSBM2; + WFPacket *wfPacketCWF_F3; SpectraPacket *spectraPacketNormalSpectrumF0; bool parsingContinue; diff --git a/gse_lesia/mainwindowui.cpp b/gse_lesia/mainwindowui.cpp --- a/gse_lesia/mainwindowui.cpp +++ b/gse_lesia/mainwindowui.cpp @@ -23,13 +23,13 @@ MainWindowUI::MainWindowUI(QWidget *pare tmStatistics = new TMStatistics; wfDisplay = new WFDisplay(0, 2048, 2048, 15000); -// wfPageBurst = new WFPage(0, 7 * BLK_NR_CWF, 7 * BLK_NR_CWF, 15000); - wfPage_CWF_F1 = new WFPage(0, 7 * BLK_NR_CWF, 7 * BLK_NR_CWF, 15000); - wfPage_CWF_F2 = new WFPage(0, 7 * BLK_NR_CWF, 7 * BLK_NR_CWF, 15000); + wfPage_CWF_F1 = new WFPage(0, 8 * BLK_NR_CWF, 8 * BLK_NR_CWF, 15000); + wfPage_CWF_F2 = new WFPage(0, 8 * BLK_NR_CWF, 8 * BLK_NR_CWF, 15000); + wfPage_CWF_F3 = new WFPage(0, 8 * BLK_NR_CWF, 8 * BLK_NR_CWF, 15000); pageSpectraNORM = new PageSpectra(); -// wfPageBurst->pageTitle = "BURST_CWF_F2"; wfPage_CWF_F1->pageTitle = "SBM1_CWF_F1"; wfPage_CWF_F2->pageTitle = "SBM2_CWF_F2"; + wfPage_CWF_F3->pageTitle = "NORM_CWF_F3"; pageSpectraNORM->pageTitle = "ASM f0"; hkDisplay = new HKDisplay(); recordPage = new RecordPage; @@ -104,6 +104,7 @@ MainWindowUI::MainWindowUI(QWidget *pare spwTabWidget->addTab(spwTabWidgetPage2, tr("WFRM NORM")); spwTabWidget->addTab( wfPage_CWF_F1, tr("CWF_F1")); spwTabWidget->addTab( wfPage_CWF_F2, tr("CWF_F2")); + spwTabWidget->addTab( wfPage_CWF_F3, tr("CWF_F3")); spwTabWidget->addTab(pageSpectraNORM, tr("ASM f0")); spwTabWidgetPage0->setLayout(mainLayout); @@ -132,11 +133,6 @@ MainWindowUI::MainWindowUI(QWidget *pare this->wfDisplay->page_f2, SLOT(storeWfrm())); connect(this->recordPage, SIGNAL(signal_defaultStorageDirectoryUpdated(QString)), this->wfDisplay->page_f2, SLOT(setDefaultStorageDirectory(QString))); - // CWF_F3 - connect(this->recordPage, SIGNAL(signal_store_cwf_f3()), - this->wfDisplay->page_f3, SLOT(storeWfrm())); - connect(this->recordPage, SIGNAL(signal_defaultStorageDirectoryUpdated(QString)), - this->wfDisplay->page_f3, SLOT(setDefaultStorageDirectory(QString))); // CWF_F1 connect(this->recordPage, SIGNAL(signal_store_cwf_f1()), this->wfPage_CWF_F1, SLOT(storeWfrm())); @@ -147,6 +143,11 @@ MainWindowUI::MainWindowUI(QWidget *pare this->wfPage_CWF_F2, SLOT(storeWfrm())); connect(this->recordPage, SIGNAL(signal_defaultStorageDirectoryUpdated(QString)), this->wfPage_CWF_F2, SLOT(setDefaultStorageDirectory(QString))); + // CWF_F3 + connect(this->recordPage, SIGNAL(signal_store_cwf_f3()), + this->wfPage_CWF_F3, SLOT(storeWfrm())); + connect(this->recordPage, SIGNAL(signal_defaultStorageDirectoryUpdated(QString)), + this->wfPage_CWF_F3, SLOT(setDefaultStorageDirectory(QString))); emit this->recordPage->signal_defaultStorageDirectoryUpdated(this->recordPage->defaultStorageDirectory); } diff --git a/gse_lesia/mainwindowui.h b/gse_lesia/mainwindowui.h --- a/gse_lesia/mainwindowui.h +++ b/gse_lesia/mainwindowui.h @@ -41,9 +41,9 @@ public: TMStatistics* tmStatistics; WFDisplay* wfDisplay; -// WFPage* wfPageBurst; WFPage* wfPage_CWF_F1; WFPage* wfPage_CWF_F2; + WFPage* wfPage_CWF_F3; PageSpectra* pageSpectraNORM; HKDisplay* hkDisplay; RecordPage* recordPage; diff --git a/parameterdump/Makefile b/parameterdump/Makefile new file mode 100644 --- /dev/null +++ b/parameterdump/Makefile @@ -0,0 +1,1029 @@ +############################################################################# +# Makefile for building: libparameterdump.so.1.0.0 +# Generated by qmake (3.0) (Qt 5.2.0) +# Project: parameterdump.pro +# Template: lib +# Command: /bin/qmake-qt5 -spec linux-g++-64 CONFIG+=debug CONFIG+=declarative_debug CONFIG+=qml_debug -o Makefile parameterdump.pro +############################################################################# + +MAKEFILE = Makefile + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DPARAMETERDUMP_LIBRARY -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB +CFLAGS = -m64 -pipe -g -Wall -W -D_REENTRANT -fPIC $(DEFINES) +CXXFLAGS = -m64 -pipe -g -Wall -W -D_REENTRANT -fPIC $(DEFINES) +INCPATH = -I/usr/lib64/qt5/mkspecs/linux-g++-64 -I. -I../../DEV_PLE/header -I../rmapplugin -I. -I/usr/include/qt5 -I/usr/include/qt5/QtPrintSupport -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I. +LINK = g++ +LFLAGS = -m64 -shared -Wl,-soname,libparameterdump.so.1 +LIBS = $(SUBLIBS) -L/usr/X11R6/lib64 -lQt5PrintSupport -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread +AR = ar cqs +RANLIB = +QMAKE = /bin/qmake-qt5 +TAR = tar -cf +COMPRESS = gzip -9f +COPY = cp -f +SED = sed +COPY_FILE = cp -f +COPY_DIR = cp -f -R +STRIP = strip +INSTALL_FILE = install -m 644 -p +INSTALL_DIR = $(COPY_DIR) +INSTALL_PROGRAM = install -m 755 -p +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p + +####### Output directory + +OBJECTS_DIR = ./ + +####### Files + +SOURCES = parameterdump.cpp \ + tcpackettosend.cpp \ + ../rmapplugin/tmpackettoread.cpp moc_parameterdump.cpp \ + moc_tcpackettosend.cpp \ + moc_tmpackettoread.cpp +OBJECTS = parameterdump.o \ + tcpackettosend.o \ + tmpackettoread.o \ + moc_parameterdump.o \ + moc_tcpackettosend.o \ + moc_tmpackettoread.o +DIST = /usr/lib64/qt5/mkspecs/features/spec_pre.prf \ + /usr/lib64/qt5/mkspecs/common/shell-unix.conf \ + /usr/lib64/qt5/mkspecs/common/unix.conf \ + /usr/lib64/qt5/mkspecs/common/linux.conf \ + /usr/lib64/qt5/mkspecs/common/gcc-base.conf \ + /usr/lib64/qt5/mkspecs/common/gcc-base-unix.conf \ + /usr/lib64/qt5/mkspecs/common/g++-base.conf \ + /usr/lib64/qt5/mkspecs/common/g++-unix.conf \ + /usr/lib64/qt5/mkspecs/qconfig.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_accountsservice.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_clucene_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_compositor.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_configuration.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_core.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_core_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_dbus.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_declarative.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_declarative_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_designer.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_designer_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_gui.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_gui_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_help.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_help_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_network.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_network_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_opengl.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qml.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qml_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quick.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_script.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_script_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_svg.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_svg_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_testlib.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_uitools.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_uitools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkit.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkit_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_widgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri \ + /usr/lib64/qt5/mkspecs/features/qt_functions.prf \ + /usr/lib64/qt5/mkspecs/features/qt_config.prf \ + /usr/lib64/qt5/mkspecs/linux-g++-64/qmake.conf \ + /usr/lib64/qt5/mkspecs/features/spec_post.prf \ + /usr/lib64/qt5/mkspecs/features/exclusive_builds.prf \ + /usr/lib64/qt5/mkspecs/features/default_pre.prf \ + /usr/lib64/qt5/mkspecs/features/resolve_config.prf \ + /usr/lib64/qt5/mkspecs/features/default_post.prf \ + /usr/lib64/qt5/mkspecs/features/qml_debug.prf \ + /usr/lib64/qt5/mkspecs/features/declarative_debug.prf \ + /usr/lib64/qt5/mkspecs/features/unix/gdb_dwarf_index.prf \ + /usr/lib64/qt5/mkspecs/features/warn_on.prf \ + /usr/lib64/qt5/mkspecs/features/qt.prf \ + /usr/lib64/qt5/mkspecs/features/resources.prf \ + /usr/lib64/qt5/mkspecs/features/moc.prf \ + /usr/lib64/qt5/mkspecs/features/unix/opengl.prf \ + /usr/lib64/qt5/mkspecs/features/uic.prf \ + /usr/lib64/qt5/mkspecs/features/unix/thread.prf \ + /usr/lib64/qt5/mkspecs/features/testcase_targets.prf \ + /usr/lib64/qt5/mkspecs/features/exceptions.prf \ + /usr/lib64/qt5/mkspecs/features/yacc.prf \ + /usr/lib64/qt5/mkspecs/features/lex.prf \ + parameterdump.pro \ + parameterdump.pro +QMAKE_TARGET = parameterdump +DESTDIR = #avoid trailing-slash linebreak +TARGET = libparameterdump.so.1.0.0 +TARGETA = libparameterdump.a +TARGETD = libparameterdump.so.1.0.0 +TARGET0 = libparameterdump.so +TARGET1 = libparameterdump.so.1 +TARGET2 = libparameterdump.so.1.0 + + +first: all +####### Implicit rules + +.SUFFIXES: .o .c .cpp .cc .cxx .C + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" + +####### Build rules + +all: Makefile $(TARGET) + +$(TARGET): $(OBJECTS) $(SUBLIBS) $(OBJCOMP) + -$(DEL_FILE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2) + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP) + -ln -s $(TARGET) $(TARGET0) + -ln -s $(TARGET) $(TARGET1) + -ln -s $(TARGET) $(TARGET2) + { test -z "$(DESTDIR)" || cd "$(DESTDIR)"; } && test $$(gdb --version | sed -e 's,[^0-9][^0-9]*\([0-9]\)\.\([0-9]\).*,\1\2,;q') -gt 72 && gdb --nx --batch --quiet -ex 'set confirm off' -ex "save gdb-index ." -ex quit '$(TARGET)' && test -f $(TARGET).gdb-index && objcopy --add-section '.gdb_index=$(TARGET).gdb-index' --set-section-flags '.gdb_index=readonly' '$(TARGET)' '$(TARGET)' && rm -f $(TARGET).gdb-index || true + + + +staticlib: $(TARGETA) + +$(TARGETA): $(OBJECTS) $(OBJCOMP) + -$(DEL_FILE) $(TARGETA) + $(AR) $(TARGETA) $(OBJECTS) + +Makefile: parameterdump.pro /usr/lib64/qt5/mkspecs/linux-g++-64/qmake.conf /usr/lib64/qt5/mkspecs/features/spec_pre.prf \ + /usr/lib64/qt5/mkspecs/common/shell-unix.conf \ + /usr/lib64/qt5/mkspecs/common/unix.conf \ + /usr/lib64/qt5/mkspecs/common/linux.conf \ + /usr/lib64/qt5/mkspecs/common/gcc-base.conf \ + /usr/lib64/qt5/mkspecs/common/gcc-base-unix.conf \ + /usr/lib64/qt5/mkspecs/common/g++-base.conf \ + /usr/lib64/qt5/mkspecs/common/g++-unix.conf \ + /usr/lib64/qt5/mkspecs/qconfig.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_accountsservice.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_clucene_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_compositor.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_configuration.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_core.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_core_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_dbus.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_declarative.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_declarative_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_designer.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_designer_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_gui.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_gui_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_help.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_help_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_network.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_network_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_opengl.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qml.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qml_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quick.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_script.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_script_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_svg.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_svg_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_testlib.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_uitools.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_uitools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkit.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkit_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_widgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri \ + /usr/lib64/qt5/mkspecs/features/qt_functions.prf \ + /usr/lib64/qt5/mkspecs/features/qt_config.prf \ + /usr/lib64/qt5/mkspecs/linux-g++-64/qmake.conf \ + /usr/lib64/qt5/mkspecs/features/spec_post.prf \ + /usr/lib64/qt5/mkspecs/features/exclusive_builds.prf \ + /usr/lib64/qt5/mkspecs/features/default_pre.prf \ + /usr/lib64/qt5/mkspecs/features/resolve_config.prf \ + /usr/lib64/qt5/mkspecs/features/default_post.prf \ + /usr/lib64/qt5/mkspecs/features/qml_debug.prf \ + /usr/lib64/qt5/mkspecs/features/declarative_debug.prf \ + /usr/lib64/qt5/mkspecs/features/unix/gdb_dwarf_index.prf \ + /usr/lib64/qt5/mkspecs/features/warn_on.prf \ + /usr/lib64/qt5/mkspecs/features/qt.prf \ + /usr/lib64/qt5/mkspecs/features/resources.prf \ + /usr/lib64/qt5/mkspecs/features/moc.prf \ + /usr/lib64/qt5/mkspecs/features/unix/opengl.prf \ + /usr/lib64/qt5/mkspecs/features/uic.prf \ + /usr/lib64/qt5/mkspecs/features/unix/thread.prf \ + /usr/lib64/qt5/mkspecs/features/testcase_targets.prf \ + /usr/lib64/qt5/mkspecs/features/exceptions.prf \ + /usr/lib64/qt5/mkspecs/features/yacc.prf \ + /usr/lib64/qt5/mkspecs/features/lex.prf \ + parameterdump.pro \ + /lib64/libQt5PrintSupport.prl \ + /lib64/libQt5Widgets.prl \ + /lib64/libQt5Gui.prl \ + /lib64/libQt5Core.prl + $(QMAKE) -spec linux-g++-64 CONFIG+=debug CONFIG+=declarative_debug CONFIG+=qml_debug -o Makefile parameterdump.pro +/usr/lib64/qt5/mkspecs/features/spec_pre.prf: +/usr/lib64/qt5/mkspecs/common/shell-unix.conf: +/usr/lib64/qt5/mkspecs/common/unix.conf: +/usr/lib64/qt5/mkspecs/common/linux.conf: +/usr/lib64/qt5/mkspecs/common/gcc-base.conf: +/usr/lib64/qt5/mkspecs/common/gcc-base-unix.conf: +/usr/lib64/qt5/mkspecs/common/g++-base.conf: +/usr/lib64/qt5/mkspecs/common/g++-unix.conf: +/usr/lib64/qt5/mkspecs/qconfig.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_accountsservice.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_clucene_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_compositor.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_configuration.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_core.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_core_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_dbus.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_dbus_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_declarative.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_declarative_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_designer.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_designer_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_gui.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_gui_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_help.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_help_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_network.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_network_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_opengl.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_opengl_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qml.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qml_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_quick.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_script.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_script_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_svg.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_svg_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_testlib.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_testlib_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_uitools.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_uitools_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_webkit.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_webkit_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_widgets.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_widgets_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri: +/usr/lib64/qt5/mkspecs/features/qt_functions.prf: +/usr/lib64/qt5/mkspecs/features/qt_config.prf: +/usr/lib64/qt5/mkspecs/linux-g++-64/qmake.conf: +/usr/lib64/qt5/mkspecs/features/spec_post.prf: +/usr/lib64/qt5/mkspecs/features/exclusive_builds.prf: +/usr/lib64/qt5/mkspecs/features/default_pre.prf: +/usr/lib64/qt5/mkspecs/features/resolve_config.prf: +/usr/lib64/qt5/mkspecs/features/default_post.prf: +/usr/lib64/qt5/mkspecs/features/qml_debug.prf: +/usr/lib64/qt5/mkspecs/features/declarative_debug.prf: +/usr/lib64/qt5/mkspecs/features/unix/gdb_dwarf_index.prf: +/usr/lib64/qt5/mkspecs/features/warn_on.prf: +/usr/lib64/qt5/mkspecs/features/qt.prf: +/usr/lib64/qt5/mkspecs/features/resources.prf: +/usr/lib64/qt5/mkspecs/features/moc.prf: +/usr/lib64/qt5/mkspecs/features/unix/opengl.prf: +/usr/lib64/qt5/mkspecs/features/uic.prf: +/usr/lib64/qt5/mkspecs/features/unix/thread.prf: +/usr/lib64/qt5/mkspecs/features/testcase_targets.prf: +/usr/lib64/qt5/mkspecs/features/exceptions.prf: +/usr/lib64/qt5/mkspecs/features/yacc.prf: +/usr/lib64/qt5/mkspecs/features/lex.prf: +parameterdump.pro: +/lib64/libQt5PrintSupport.prl: +/lib64/libQt5Widgets.prl: +/lib64/libQt5Gui.prl: +/lib64/libQt5Core.prl: +qmake: FORCE + @$(QMAKE) -spec linux-g++-64 CONFIG+=debug CONFIG+=declarative_debug CONFIG+=qml_debug -o Makefile parameterdump.pro + +qmake_all: FORCE + +dist: + @test -d .tmp/parameterdump1.0.0 || mkdir -p .tmp/parameterdump1.0.0 + $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/parameterdump1.0.0/ && $(COPY_FILE) --parents parameterdump.h parameterdump_global.h tcpackettosend.h ../../DEV_PLE/header/ccsds_types.h ../../DEV_PLE/header/TC_types.h ../rmapplugin/tmpackettoread.h .tmp/parameterdump1.0.0/ && $(COPY_FILE) --parents parameterdump.cpp tcpackettosend.cpp ../rmapplugin/tmpackettoread.cpp .tmp/parameterdump1.0.0/ && (cd `dirname .tmp/parameterdump1.0.0` && $(TAR) parameterdump1.0.0.tar parameterdump1.0.0 && $(COMPRESS) parameterdump1.0.0.tar) && $(MOVE) `dirname .tmp/parameterdump1.0.0`/parameterdump1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/parameterdump1.0.0 + + +clean:compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +####### Sub-libraries + +distclean: clean + -$(DEL_FILE) $(TARGET) + -$(DEL_FILE) $(TARGET0) $(TARGET1) $(TARGET2) $(TARGETA) + -$(DEL_FILE) Makefile + + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +check: first + +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_moc_header_make_all: moc_parameterdump.cpp moc_tcpackettosend.cpp moc_tmpackettoread.cpp +compiler_moc_header_clean: + -$(DEL_FILE) moc_parameterdump.cpp moc_tcpackettosend.cpp moc_tmpackettoread.cpp +moc_parameterdump.cpp: /usr/include/qt5/QtWidgets/QGroupBox \ + /usr/include/qt5/QtWidgets/qgroupbox.h \ + /usr/include/qt5/QtWidgets/qframe.h \ + /usr/include/qt5/QtWidgets/qwidget.h \ + /usr/include/qt5/QtGui/qwindowdefs.h \ + /usr/include/qt5/QtCore/qglobal.h \ + /usr/include/qt5/QtCore/qconfig.h \ + /usr/include/qt5/QtCore/qconfig-64.h \ + /usr/include/qt5/QtCore/qfeatures.h \ + /usr/include/qt5/QtCore/qsystemdetection.h \ + /usr/include/qt5/QtCore/qprocessordetection.h \ + /usr/include/qt5/QtCore/qcompilerdetection.h \ + /usr/include/qt5/QtCore/qglobalstatic.h \ + /usr/include/qt5/QtCore/qatomic.h \ + /usr/include/qt5/QtCore/qbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_bootstrap.h \ + /usr/include/qt5/QtCore/qgenericatomic.h \ + /usr/include/qt5/QtCore/qatomic_msvc.h \ + /usr/include/qt5/QtCore/qatomic_integrity.h \ + /usr/include/qt5/QtCore/qoldbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_vxworks.h \ + /usr/include/qt5/QtCore/qatomic_power.h \ + /usr/include/qt5/QtCore/qatomic_alpha.h \ + /usr/include/qt5/QtCore/qatomic_armv7.h \ + /usr/include/qt5/QtCore/qatomic_armv6.h \ + /usr/include/qt5/QtCore/qatomic_armv5.h \ + /usr/include/qt5/QtCore/qatomic_bfin.h \ + /usr/include/qt5/QtCore/qatomic_ia64.h \ + /usr/include/qt5/QtCore/qatomic_mips.h \ + /usr/include/qt5/QtCore/qatomic_s390.h \ + /usr/include/qt5/QtCore/qatomic_sh4a.h \ + /usr/include/qt5/QtCore/qatomic_sparc.h \ + /usr/include/qt5/QtCore/qatomic_x86.h \ + /usr/include/qt5/QtCore/qatomic_cxx11.h \ + /usr/include/qt5/QtCore/qatomic_gcc.h \ + /usr/include/qt5/QtCore/qatomic_unix.h \ + /usr/include/qt5/QtCore/qmutex.h \ + /usr/include/qt5/QtCore/qlogging.h \ + /usr/include/qt5/QtCore/qflags.h \ + /usr/include/qt5/QtCore/qtypeinfo.h \ + /usr/include/qt5/QtCore/qtypetraits.h \ + /usr/include/qt5/QtCore/qsysinfo.h \ + /usr/include/qt5/QtCore/qobjectdefs.h \ + /usr/include/qt5/QtCore/qnamespace.h \ + /usr/include/qt5/QtCore/qobjectdefs_impl.h \ + /usr/include/qt5/QtGui/qwindowdefs_win.h \ + /usr/include/qt5/QtCore/qobject.h \ + /usr/include/qt5/QtCore/qstring.h \ + /usr/include/qt5/QtCore/qchar.h \ + /usr/include/qt5/QtCore/qbytearray.h \ + /usr/include/qt5/QtCore/qrefcount.h \ + /usr/include/qt5/QtCore/qarraydata.h \ + /usr/include/qt5/QtCore/qstringbuilder.h \ + /usr/include/qt5/QtCore/qlist.h \ + /usr/include/qt5/QtCore/qalgorithms.h \ + /usr/include/qt5/QtCore/qiterator.h \ + /usr/include/qt5/QtCore/qcoreevent.h \ + /usr/include/qt5/QtCore/qscopedpointer.h \ + /usr/include/qt5/QtCore/qmetatype.h \ + /usr/include/qt5/QtCore/qvarlengtharray.h \ + /usr/include/qt5/QtCore/qcontainerfwd.h \ + /usr/include/qt5/QtCore/qisenum.h \ + /usr/include/qt5/QtCore/qobject_impl.h \ + /usr/include/qt5/QtCore/qmargins.h \ + /usr/include/qt5/QtCore/qrect.h \ + /usr/include/qt5/QtCore/qsize.h \ + /usr/include/qt5/QtCore/qpoint.h \ + /usr/include/qt5/QtGui/qpaintdevice.h \ + /usr/include/qt5/QtGui/qpalette.h \ + /usr/include/qt5/QtGui/qcolor.h \ + /usr/include/qt5/QtGui/qrgb.h \ + /usr/include/qt5/QtCore/qstringlist.h \ + /usr/include/qt5/QtCore/qdatastream.h \ + /usr/include/qt5/QtCore/qiodevice.h \ + /usr/include/qt5/QtCore/qpair.h \ + /usr/include/qt5/QtCore/qregexp.h \ + /usr/include/qt5/QtCore/qstringmatcher.h \ + /usr/include/qt5/QtGui/qbrush.h \ + /usr/include/qt5/QtCore/qvector.h \ + /usr/include/qt5/QtGui/qmatrix.h \ + /usr/include/qt5/QtGui/qpolygon.h \ + /usr/include/qt5/QtGui/qregion.h \ + /usr/include/qt5/QtCore/qline.h \ + /usr/include/qt5/QtGui/qtransform.h \ + /usr/include/qt5/QtGui/qpainterpath.h \ + /usr/include/qt5/QtGui/qimage.h \ + /usr/include/qt5/QtGui/qpixmap.h \ + /usr/include/qt5/QtCore/qsharedpointer.h \ + /usr/include/qt5/QtCore/qshareddata.h \ + /usr/include/qt5/QtCore/qsharedpointer_impl.h \ + /usr/include/qt5/QtCore/qhash.h \ + /usr/include/qt5/QtGui/qfont.h \ + /usr/include/qt5/QtGui/qfontmetrics.h \ + /usr/include/qt5/QtGui/qfontinfo.h \ + /usr/include/qt5/QtWidgets/qsizepolicy.h \ + /usr/include/qt5/QtGui/qcursor.h \ + /usr/include/qt5/QtGui/qkeysequence.h \ + /usr/include/qt5/QtGui/qevent.h \ + /usr/include/qt5/QtCore/qvariant.h \ + /usr/include/qt5/QtCore/qmap.h \ + /usr/include/qt5/QtCore/qdebug.h \ + /usr/include/qt5/QtCore/qtextstream.h \ + /usr/include/qt5/QtCore/qlocale.h \ + /usr/include/qt5/QtCore/qset.h \ + /usr/include/qt5/QtCore/qcontiguouscache.h \ + /usr/include/qt5/QtCore/qurl.h \ + /usr/include/qt5/QtCore/qurlquery.h \ + /usr/include/qt5/QtCore/qfile.h \ + /usr/include/qt5/QtCore/qfiledevice.h \ + /usr/include/qt5/QtGui/qvector2d.h \ + /usr/include/qt5/QtGui/qtouchdevice.h \ + /usr/include/qt5/QtWidgets/QGridLayout \ + /usr/include/qt5/QtWidgets/qgridlayout.h \ + /usr/include/qt5/QtWidgets/qlayout.h \ + /usr/include/qt5/QtWidgets/qlayoutitem.h \ + /usr/include/qt5/QtWidgets/qboxlayout.h \ + /usr/include/qt5/QtWidgets/QPushButton \ + /usr/include/qt5/QtWidgets/qpushbutton.h \ + /usr/include/qt5/QtWidgets/qabstractbutton.h \ + /usr/include/qt5/QtGui/qicon.h \ + /usr/include/qt5/QtWidgets/QLabel \ + /usr/include/qt5/QtWidgets/qlabel.h \ + /usr/include/qt5/QtWidgets/QSpinBox \ + /usr/include/qt5/QtWidgets/qspinbox.h \ + /usr/include/qt5/QtWidgets/qabstractspinbox.h \ + /usr/include/qt5/QtGui/qvalidator.h \ + /usr/include/qt5/QtCore/qregularexpression.h \ + /usr/include/qt5/QtWidgets/QDoubleSpinBox \ + ../rmapplugin/tmpackettoread.h \ + /usr/include/qt5/QtCore/QObject \ + ../../DEV_PLE/header/TC_types.h \ + ../../DEV_PLE/header/ccsds_types.h \ + parameterdump_global.h \ + tcpackettosend.h \ + parameterdump.h + /usr/lib64/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/lib/gcc/include/c++/4.8.2 -I/usr/lib/gcc/include/c++/4.8.2/x86_64-redhat-linux -I/usr/lib/gcc/include/c++/4.8.2/backward -I/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include -I/usr/local/include -I/usr/include parameterdump.h -o moc_parameterdump.cpp + +moc_tcpackettosend.cpp: /usr/include/qt5/QtCore/QObject \ + /usr/include/qt5/QtCore/qobject.h \ + /usr/include/qt5/QtCore/qobjectdefs.h \ + /usr/include/qt5/QtCore/qnamespace.h \ + /usr/include/qt5/QtCore/qglobal.h \ + /usr/include/qt5/QtCore/qconfig.h \ + /usr/include/qt5/QtCore/qconfig-64.h \ + /usr/include/qt5/QtCore/qfeatures.h \ + /usr/include/qt5/QtCore/qsystemdetection.h \ + /usr/include/qt5/QtCore/qprocessordetection.h \ + /usr/include/qt5/QtCore/qcompilerdetection.h \ + /usr/include/qt5/QtCore/qglobalstatic.h \ + /usr/include/qt5/QtCore/qatomic.h \ + /usr/include/qt5/QtCore/qbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_bootstrap.h \ + /usr/include/qt5/QtCore/qgenericatomic.h \ + /usr/include/qt5/QtCore/qatomic_msvc.h \ + /usr/include/qt5/QtCore/qatomic_integrity.h \ + /usr/include/qt5/QtCore/qoldbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_vxworks.h \ + /usr/include/qt5/QtCore/qatomic_power.h \ + /usr/include/qt5/QtCore/qatomic_alpha.h \ + /usr/include/qt5/QtCore/qatomic_armv7.h \ + /usr/include/qt5/QtCore/qatomic_armv6.h \ + /usr/include/qt5/QtCore/qatomic_armv5.h \ + /usr/include/qt5/QtCore/qatomic_bfin.h \ + /usr/include/qt5/QtCore/qatomic_ia64.h \ + /usr/include/qt5/QtCore/qatomic_mips.h \ + /usr/include/qt5/QtCore/qatomic_s390.h \ + /usr/include/qt5/QtCore/qatomic_sh4a.h \ + /usr/include/qt5/QtCore/qatomic_sparc.h \ + /usr/include/qt5/QtCore/qatomic_x86.h \ + /usr/include/qt5/QtCore/qatomic_cxx11.h \ + /usr/include/qt5/QtCore/qatomic_gcc.h \ + /usr/include/qt5/QtCore/qatomic_unix.h \ + /usr/include/qt5/QtCore/qmutex.h \ + /usr/include/qt5/QtCore/qlogging.h \ + /usr/include/qt5/QtCore/qflags.h \ + /usr/include/qt5/QtCore/qtypeinfo.h \ + /usr/include/qt5/QtCore/qtypetraits.h \ + /usr/include/qt5/QtCore/qsysinfo.h \ + /usr/include/qt5/QtCore/qobjectdefs_impl.h \ + /usr/include/qt5/QtCore/qstring.h \ + /usr/include/qt5/QtCore/qchar.h \ + /usr/include/qt5/QtCore/qbytearray.h \ + /usr/include/qt5/QtCore/qrefcount.h \ + /usr/include/qt5/QtCore/qarraydata.h \ + /usr/include/qt5/QtCore/qstringbuilder.h \ + /usr/include/qt5/QtCore/qlist.h \ + /usr/include/qt5/QtCore/qalgorithms.h \ + /usr/include/qt5/QtCore/qiterator.h \ + /usr/include/qt5/QtCore/qcoreevent.h \ + /usr/include/qt5/QtCore/qscopedpointer.h \ + /usr/include/qt5/QtCore/qmetatype.h \ + /usr/include/qt5/QtCore/qvarlengtharray.h \ + /usr/include/qt5/QtCore/qcontainerfwd.h \ + /usr/include/qt5/QtCore/qisenum.h \ + /usr/include/qt5/QtCore/qobject_impl.h \ + parameterdump_global.h \ + ../../DEV_PLE/header/TC_types.h \ + ../../DEV_PLE/header/ccsds_types.h \ + tcpackettosend.h + /usr/lib64/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/lib/gcc/include/c++/4.8.2 -I/usr/lib/gcc/include/c++/4.8.2/x86_64-redhat-linux -I/usr/lib/gcc/include/c++/4.8.2/backward -I/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include -I/usr/local/include -I/usr/include tcpackettosend.h -o moc_tcpackettosend.cpp + +moc_tmpackettoread.cpp: /usr/include/qt5/QtCore/QObject \ + /usr/include/qt5/QtCore/qobject.h \ + /usr/include/qt5/QtCore/qobjectdefs.h \ + /usr/include/qt5/QtCore/qnamespace.h \ + /usr/include/qt5/QtCore/qglobal.h \ + /usr/include/qt5/QtCore/qconfig.h \ + /usr/include/qt5/QtCore/qconfig-64.h \ + /usr/include/qt5/QtCore/qfeatures.h \ + /usr/include/qt5/QtCore/qsystemdetection.h \ + /usr/include/qt5/QtCore/qprocessordetection.h \ + /usr/include/qt5/QtCore/qcompilerdetection.h \ + /usr/include/qt5/QtCore/qglobalstatic.h \ + /usr/include/qt5/QtCore/qatomic.h \ + /usr/include/qt5/QtCore/qbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_bootstrap.h \ + /usr/include/qt5/QtCore/qgenericatomic.h \ + /usr/include/qt5/QtCore/qatomic_msvc.h \ + /usr/include/qt5/QtCore/qatomic_integrity.h \ + /usr/include/qt5/QtCore/qoldbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_vxworks.h \ + /usr/include/qt5/QtCore/qatomic_power.h \ + /usr/include/qt5/QtCore/qatomic_alpha.h \ + /usr/include/qt5/QtCore/qatomic_armv7.h \ + /usr/include/qt5/QtCore/qatomic_armv6.h \ + /usr/include/qt5/QtCore/qatomic_armv5.h \ + /usr/include/qt5/QtCore/qatomic_bfin.h \ + /usr/include/qt5/QtCore/qatomic_ia64.h \ + /usr/include/qt5/QtCore/qatomic_mips.h \ + /usr/include/qt5/QtCore/qatomic_s390.h \ + /usr/include/qt5/QtCore/qatomic_sh4a.h \ + /usr/include/qt5/QtCore/qatomic_sparc.h \ + /usr/include/qt5/QtCore/qatomic_x86.h \ + /usr/include/qt5/QtCore/qatomic_cxx11.h \ + /usr/include/qt5/QtCore/qatomic_gcc.h \ + /usr/include/qt5/QtCore/qatomic_unix.h \ + /usr/include/qt5/QtCore/qmutex.h \ + /usr/include/qt5/QtCore/qlogging.h \ + /usr/include/qt5/QtCore/qflags.h \ + /usr/include/qt5/QtCore/qtypeinfo.h \ + /usr/include/qt5/QtCore/qtypetraits.h \ + /usr/include/qt5/QtCore/qsysinfo.h \ + /usr/include/qt5/QtCore/qobjectdefs_impl.h \ + /usr/include/qt5/QtCore/qstring.h \ + /usr/include/qt5/QtCore/qchar.h \ + /usr/include/qt5/QtCore/qbytearray.h \ + /usr/include/qt5/QtCore/qrefcount.h \ + /usr/include/qt5/QtCore/qarraydata.h \ + /usr/include/qt5/QtCore/qstringbuilder.h \ + /usr/include/qt5/QtCore/qlist.h \ + /usr/include/qt5/QtCore/qalgorithms.h \ + /usr/include/qt5/QtCore/qiterator.h \ + /usr/include/qt5/QtCore/qcoreevent.h \ + /usr/include/qt5/QtCore/qscopedpointer.h \ + /usr/include/qt5/QtCore/qmetatype.h \ + /usr/include/qt5/QtCore/qvarlengtharray.h \ + /usr/include/qt5/QtCore/qcontainerfwd.h \ + /usr/include/qt5/QtCore/qisenum.h \ + /usr/include/qt5/QtCore/qobject_impl.h \ + ../rmapplugin/tmpackettoread.h + /usr/lib64/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/lib/gcc/include/c++/4.8.2 -I/usr/lib/gcc/include/c++/4.8.2/x86_64-redhat-linux -I/usr/lib/gcc/include/c++/4.8.2/backward -I/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include -I/usr/local/include -I/usr/include ../rmapplugin/tmpackettoread.h -o moc_tmpackettoread.cpp + +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: +compiler_uic_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_moc_header_clean + +####### Compile + +parameterdump.o: parameterdump.cpp parameterdump.h \ + /usr/include/qt5/QtWidgets/QGroupBox \ + /usr/include/qt5/QtWidgets/qgroupbox.h \ + /usr/include/qt5/QtWidgets/qframe.h \ + /usr/include/qt5/QtWidgets/qwidget.h \ + /usr/include/qt5/QtGui/qwindowdefs.h \ + /usr/include/qt5/QtCore/qglobal.h \ + /usr/include/qt5/QtCore/qconfig.h \ + /usr/include/qt5/QtCore/qconfig-64.h \ + /usr/include/qt5/QtCore/qfeatures.h \ + /usr/include/qt5/QtCore/qsystemdetection.h \ + /usr/include/qt5/QtCore/qprocessordetection.h \ + /usr/include/qt5/QtCore/qcompilerdetection.h \ + /usr/include/qt5/QtCore/qglobalstatic.h \ + /usr/include/qt5/QtCore/qatomic.h \ + /usr/include/qt5/QtCore/qbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_bootstrap.h \ + /usr/include/qt5/QtCore/qgenericatomic.h \ + /usr/include/qt5/QtCore/qatomic_msvc.h \ + /usr/include/qt5/QtCore/qatomic_integrity.h \ + /usr/include/qt5/QtCore/qoldbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_vxworks.h \ + /usr/include/qt5/QtCore/qatomic_power.h \ + /usr/include/qt5/QtCore/qatomic_alpha.h \ + /usr/include/qt5/QtCore/qatomic_armv7.h \ + /usr/include/qt5/QtCore/qatomic_armv6.h \ + /usr/include/qt5/QtCore/qatomic_armv5.h \ + /usr/include/qt5/QtCore/qatomic_bfin.h \ + /usr/include/qt5/QtCore/qatomic_ia64.h \ + /usr/include/qt5/QtCore/qatomic_mips.h \ + /usr/include/qt5/QtCore/qatomic_s390.h \ + /usr/include/qt5/QtCore/qatomic_sh4a.h \ + /usr/include/qt5/QtCore/qatomic_sparc.h \ + /usr/include/qt5/QtCore/qatomic_x86.h \ + /usr/include/qt5/QtCore/qatomic_cxx11.h \ + /usr/include/qt5/QtCore/qatomic_gcc.h \ + /usr/include/qt5/QtCore/qatomic_unix.h \ + /usr/include/qt5/QtCore/qmutex.h \ + /usr/include/qt5/QtCore/qlogging.h \ + /usr/include/qt5/QtCore/qflags.h \ + /usr/include/qt5/QtCore/qtypeinfo.h \ + /usr/include/qt5/QtCore/qtypetraits.h \ + /usr/include/qt5/QtCore/qsysinfo.h \ + /usr/include/qt5/QtCore/qobjectdefs.h \ + /usr/include/qt5/QtCore/qnamespace.h \ + /usr/include/qt5/QtCore/qobjectdefs_impl.h \ + /usr/include/qt5/QtGui/qwindowdefs_win.h \ + /usr/include/qt5/QtCore/qobject.h \ + /usr/include/qt5/QtCore/qstring.h \ + /usr/include/qt5/QtCore/qchar.h \ + /usr/include/qt5/QtCore/qbytearray.h \ + /usr/include/qt5/QtCore/qrefcount.h \ + /usr/include/qt5/QtCore/qarraydata.h \ + /usr/include/qt5/QtCore/qstringbuilder.h \ + /usr/include/qt5/QtCore/qlist.h \ + /usr/include/qt5/QtCore/qalgorithms.h \ + /usr/include/qt5/QtCore/qiterator.h \ + /usr/include/qt5/QtCore/qcoreevent.h \ + /usr/include/qt5/QtCore/qscopedpointer.h \ + /usr/include/qt5/QtCore/qmetatype.h \ + /usr/include/qt5/QtCore/qvarlengtharray.h \ + /usr/include/qt5/QtCore/qcontainerfwd.h \ + /usr/include/qt5/QtCore/qisenum.h \ + /usr/include/qt5/QtCore/qobject_impl.h \ + /usr/include/qt5/QtCore/qmargins.h \ + /usr/include/qt5/QtCore/qrect.h \ + /usr/include/qt5/QtCore/qsize.h \ + /usr/include/qt5/QtCore/qpoint.h \ + /usr/include/qt5/QtGui/qpaintdevice.h \ + /usr/include/qt5/QtGui/qpalette.h \ + /usr/include/qt5/QtGui/qcolor.h \ + /usr/include/qt5/QtGui/qrgb.h \ + /usr/include/qt5/QtCore/qstringlist.h \ + /usr/include/qt5/QtCore/qdatastream.h \ + /usr/include/qt5/QtCore/qiodevice.h \ + /usr/include/qt5/QtCore/qpair.h \ + /usr/include/qt5/QtCore/qregexp.h \ + /usr/include/qt5/QtCore/qstringmatcher.h \ + /usr/include/qt5/QtGui/qbrush.h \ + /usr/include/qt5/QtCore/qvector.h \ + /usr/include/qt5/QtGui/qmatrix.h \ + /usr/include/qt5/QtGui/qpolygon.h \ + /usr/include/qt5/QtGui/qregion.h \ + /usr/include/qt5/QtCore/qline.h \ + /usr/include/qt5/QtGui/qtransform.h \ + /usr/include/qt5/QtGui/qpainterpath.h \ + /usr/include/qt5/QtGui/qimage.h \ + /usr/include/qt5/QtGui/qpixmap.h \ + /usr/include/qt5/QtCore/qsharedpointer.h \ + /usr/include/qt5/QtCore/qshareddata.h \ + /usr/include/qt5/QtCore/qsharedpointer_impl.h \ + /usr/include/qt5/QtCore/qhash.h \ + /usr/include/qt5/QtGui/qfont.h \ + /usr/include/qt5/QtGui/qfontmetrics.h \ + /usr/include/qt5/QtGui/qfontinfo.h \ + /usr/include/qt5/QtWidgets/qsizepolicy.h \ + /usr/include/qt5/QtGui/qcursor.h \ + /usr/include/qt5/QtGui/qkeysequence.h \ + /usr/include/qt5/QtGui/qevent.h \ + /usr/include/qt5/QtCore/qvariant.h \ + /usr/include/qt5/QtCore/qmap.h \ + /usr/include/qt5/QtCore/qdebug.h \ + /usr/include/qt5/QtCore/qtextstream.h \ + /usr/include/qt5/QtCore/qlocale.h \ + /usr/include/qt5/QtCore/qset.h \ + /usr/include/qt5/QtCore/qcontiguouscache.h \ + /usr/include/qt5/QtCore/qurl.h \ + /usr/include/qt5/QtCore/qurlquery.h \ + /usr/include/qt5/QtCore/qfile.h \ + /usr/include/qt5/QtCore/qfiledevice.h \ + /usr/include/qt5/QtGui/qvector2d.h \ + /usr/include/qt5/QtGui/qtouchdevice.h \ + /usr/include/qt5/QtWidgets/QGridLayout \ + /usr/include/qt5/QtWidgets/qgridlayout.h \ + /usr/include/qt5/QtWidgets/qlayout.h \ + /usr/include/qt5/QtWidgets/qlayoutitem.h \ + /usr/include/qt5/QtWidgets/qboxlayout.h \ + /usr/include/qt5/QtWidgets/QPushButton \ + /usr/include/qt5/QtWidgets/qpushbutton.h \ + /usr/include/qt5/QtWidgets/qabstractbutton.h \ + /usr/include/qt5/QtGui/qicon.h \ + /usr/include/qt5/QtWidgets/QLabel \ + /usr/include/qt5/QtWidgets/qlabel.h \ + /usr/include/qt5/QtWidgets/QSpinBox \ + /usr/include/qt5/QtWidgets/qspinbox.h \ + /usr/include/qt5/QtWidgets/qabstractspinbox.h \ + /usr/include/qt5/QtGui/qvalidator.h \ + /usr/include/qt5/QtCore/qregularexpression.h \ + /usr/include/qt5/QtWidgets/QDoubleSpinBox \ + ../rmapplugin/tmpackettoread.h \ + /usr/include/qt5/QtCore/QObject \ + ../../DEV_PLE/header/TC_types.h \ + ../../DEV_PLE/header/ccsds_types.h \ + parameterdump_global.h \ + tcpackettosend.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o parameterdump.o parameterdump.cpp + +tcpackettosend.o: tcpackettosend.cpp tcpackettosend.h \ + /usr/include/qt5/QtCore/QObject \ + /usr/include/qt5/QtCore/qobject.h \ + /usr/include/qt5/QtCore/qobjectdefs.h \ + /usr/include/qt5/QtCore/qnamespace.h \ + /usr/include/qt5/QtCore/qglobal.h \ + /usr/include/qt5/QtCore/qconfig.h \ + /usr/include/qt5/QtCore/qconfig-64.h \ + /usr/include/qt5/QtCore/qfeatures.h \ + /usr/include/qt5/QtCore/qsystemdetection.h \ + /usr/include/qt5/QtCore/qprocessordetection.h \ + /usr/include/qt5/QtCore/qcompilerdetection.h \ + /usr/include/qt5/QtCore/qglobalstatic.h \ + /usr/include/qt5/QtCore/qatomic.h \ + /usr/include/qt5/QtCore/qbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_bootstrap.h \ + /usr/include/qt5/QtCore/qgenericatomic.h \ + /usr/include/qt5/QtCore/qatomic_msvc.h \ + /usr/include/qt5/QtCore/qatomic_integrity.h \ + /usr/include/qt5/QtCore/qoldbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_vxworks.h \ + /usr/include/qt5/QtCore/qatomic_power.h \ + /usr/include/qt5/QtCore/qatomic_alpha.h \ + /usr/include/qt5/QtCore/qatomic_armv7.h \ + /usr/include/qt5/QtCore/qatomic_armv6.h \ + /usr/include/qt5/QtCore/qatomic_armv5.h \ + /usr/include/qt5/QtCore/qatomic_bfin.h \ + /usr/include/qt5/QtCore/qatomic_ia64.h \ + /usr/include/qt5/QtCore/qatomic_mips.h \ + /usr/include/qt5/QtCore/qatomic_s390.h \ + /usr/include/qt5/QtCore/qatomic_sh4a.h \ + /usr/include/qt5/QtCore/qatomic_sparc.h \ + /usr/include/qt5/QtCore/qatomic_x86.h \ + /usr/include/qt5/QtCore/qatomic_cxx11.h \ + /usr/include/qt5/QtCore/qatomic_gcc.h \ + /usr/include/qt5/QtCore/qatomic_unix.h \ + /usr/include/qt5/QtCore/qmutex.h \ + /usr/include/qt5/QtCore/qlogging.h \ + /usr/include/qt5/QtCore/qflags.h \ + /usr/include/qt5/QtCore/qtypeinfo.h \ + /usr/include/qt5/QtCore/qtypetraits.h \ + /usr/include/qt5/QtCore/qsysinfo.h \ + /usr/include/qt5/QtCore/qobjectdefs_impl.h \ + /usr/include/qt5/QtCore/qstring.h \ + /usr/include/qt5/QtCore/qchar.h \ + /usr/include/qt5/QtCore/qbytearray.h \ + /usr/include/qt5/QtCore/qrefcount.h \ + /usr/include/qt5/QtCore/qarraydata.h \ + /usr/include/qt5/QtCore/qstringbuilder.h \ + /usr/include/qt5/QtCore/qlist.h \ + /usr/include/qt5/QtCore/qalgorithms.h \ + /usr/include/qt5/QtCore/qiterator.h \ + /usr/include/qt5/QtCore/qcoreevent.h \ + /usr/include/qt5/QtCore/qscopedpointer.h \ + /usr/include/qt5/QtCore/qmetatype.h \ + /usr/include/qt5/QtCore/qvarlengtharray.h \ + /usr/include/qt5/QtCore/qcontainerfwd.h \ + /usr/include/qt5/QtCore/qisenum.h \ + /usr/include/qt5/QtCore/qobject_impl.h \ + parameterdump_global.h \ + ../../DEV_PLE/header/TC_types.h \ + ../../DEV_PLE/header/ccsds_types.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o tcpackettosend.o tcpackettosend.cpp + +tmpackettoread.o: ../rmapplugin/tmpackettoread.cpp ../rmapplugin/tmpackettoread.h \ + /usr/include/qt5/QtCore/QObject \ + /usr/include/qt5/QtCore/qobject.h \ + /usr/include/qt5/QtCore/qobjectdefs.h \ + /usr/include/qt5/QtCore/qnamespace.h \ + /usr/include/qt5/QtCore/qglobal.h \ + /usr/include/qt5/QtCore/qconfig.h \ + /usr/include/qt5/QtCore/qconfig-64.h \ + /usr/include/qt5/QtCore/qfeatures.h \ + /usr/include/qt5/QtCore/qsystemdetection.h \ + /usr/include/qt5/QtCore/qprocessordetection.h \ + /usr/include/qt5/QtCore/qcompilerdetection.h \ + /usr/include/qt5/QtCore/qglobalstatic.h \ + /usr/include/qt5/QtCore/qatomic.h \ + /usr/include/qt5/QtCore/qbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_bootstrap.h \ + /usr/include/qt5/QtCore/qgenericatomic.h \ + /usr/include/qt5/QtCore/qatomic_msvc.h \ + /usr/include/qt5/QtCore/qatomic_integrity.h \ + /usr/include/qt5/QtCore/qoldbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_vxworks.h \ + /usr/include/qt5/QtCore/qatomic_power.h \ + /usr/include/qt5/QtCore/qatomic_alpha.h \ + /usr/include/qt5/QtCore/qatomic_armv7.h \ + /usr/include/qt5/QtCore/qatomic_armv6.h \ + /usr/include/qt5/QtCore/qatomic_armv5.h \ + /usr/include/qt5/QtCore/qatomic_bfin.h \ + /usr/include/qt5/QtCore/qatomic_ia64.h \ + /usr/include/qt5/QtCore/qatomic_mips.h \ + /usr/include/qt5/QtCore/qatomic_s390.h \ + /usr/include/qt5/QtCore/qatomic_sh4a.h \ + /usr/include/qt5/QtCore/qatomic_sparc.h \ + /usr/include/qt5/QtCore/qatomic_x86.h \ + /usr/include/qt5/QtCore/qatomic_cxx11.h \ + /usr/include/qt5/QtCore/qatomic_gcc.h \ + /usr/include/qt5/QtCore/qatomic_unix.h \ + /usr/include/qt5/QtCore/qmutex.h \ + /usr/include/qt5/QtCore/qlogging.h \ + /usr/include/qt5/QtCore/qflags.h \ + /usr/include/qt5/QtCore/qtypeinfo.h \ + /usr/include/qt5/QtCore/qtypetraits.h \ + /usr/include/qt5/QtCore/qsysinfo.h \ + /usr/include/qt5/QtCore/qobjectdefs_impl.h \ + /usr/include/qt5/QtCore/qstring.h \ + /usr/include/qt5/QtCore/qchar.h \ + /usr/include/qt5/QtCore/qbytearray.h \ + /usr/include/qt5/QtCore/qrefcount.h \ + /usr/include/qt5/QtCore/qarraydata.h \ + /usr/include/qt5/QtCore/qstringbuilder.h \ + /usr/include/qt5/QtCore/qlist.h \ + /usr/include/qt5/QtCore/qalgorithms.h \ + /usr/include/qt5/QtCore/qiterator.h \ + /usr/include/qt5/QtCore/qcoreevent.h \ + /usr/include/qt5/QtCore/qscopedpointer.h \ + /usr/include/qt5/QtCore/qmetatype.h \ + /usr/include/qt5/QtCore/qvarlengtharray.h \ + /usr/include/qt5/QtCore/qcontainerfwd.h \ + /usr/include/qt5/QtCore/qisenum.h \ + /usr/include/qt5/QtCore/qobject_impl.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o tmpackettoread.o ../rmapplugin/tmpackettoread.cpp + +moc_parameterdump.o: moc_parameterdump.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_parameterdump.o moc_parameterdump.cpp + +moc_tcpackettosend.o: moc_tcpackettosend.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_tcpackettosend.o moc_tcpackettosend.cpp + +moc_tmpackettoread.o: moc_tmpackettoread.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_tmpackettoread.o moc_tmpackettoread.cpp + +####### Install + +install_header: first FORCE + @test -d $(INSTALL_ROOT)/usr/include/qt5/lppmon/parameterdump || mkdir -p $(INSTALL_ROOT)/usr/include/qt5/lppmon/parameterdump + -$(INSTALL_FILE) /opt/LPPMON_PLUGINS_PAUL/parameterdump/parameterdump.h $(INSTALL_ROOT)/usr/include/qt5/lppmon/parameterdump/ + -$(INSTALL_FILE) /opt/LPPMON_PLUGINS_PAUL/parameterdump/parameterdump_global.h $(INSTALL_ROOT)/usr/include/qt5/lppmon/parameterdump/ + -$(INSTALL_FILE) /opt/LPPMON_PLUGINS_PAUL/parameterdump/tcpackettosend.h $(INSTALL_ROOT)/usr/include/qt5/lppmon/parameterdump/ + +uninstall_header: FORCE + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/include/qt5/lppmon/parameterdump/tcpackettosend.h + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/include/qt5/lppmon/parameterdump/parameterdump_global.h + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/include/qt5/lppmon/parameterdump/parameterdump.h + -$(DEL_DIR) $(INSTALL_ROOT)/usr/include/qt5/lppmon/parameterdump/ + + +install_target: first FORCE + @test -d $(INSTALL_ROOT)/usr/lib64 || mkdir -p $(INSTALL_ROOT)/usr/lib64 + -$(INSTALL_PROGRAM) "$(TARGET)" "$(INSTALL_ROOT)/usr/lib64/$(TARGET)" + -$(SYMLINK) "$(TARGET)" "$(INSTALL_ROOT)/usr/lib64/$(TARGET0)" + -$(SYMLINK) "$(TARGET)" "$(INSTALL_ROOT)/usr/lib64/$(TARGET1)" + -$(SYMLINK) "$(TARGET)" "$(INSTALL_ROOT)/usr/lib64/$(TARGET2)" + +uninstall_target: FORCE + -$(DEL_FILE) "$(INSTALL_ROOT)/usr/lib64/$(TARGET)" + -$(DEL_FILE) "$(INSTALL_ROOT)/usr/lib64/$(TARGET0)" + -$(DEL_FILE) "$(INSTALL_ROOT)/usr/lib64/$(TARGET1)" + -$(DEL_FILE) "$(INSTALL_ROOT)/usr/lib64/$(TARGET2)" + -$(DEL_DIR) $(INSTALL_ROOT)/usr/lib64/ + + +install: install_header install_target FORCE + +uninstall: uninstall_header uninstall_target FORCE + +FORCE: + diff --git a/paulcommon/Makefile b/paulcommon/Makefile new file mode 100644 --- /dev/null +++ b/paulcommon/Makefile @@ -0,0 +1,1040 @@ +############################################################################# +# Makefile for building: libpaulcommon.so.1.0.0 +# Generated by qmake (3.0) (Qt 5.2.0) +# Project: paulcommon.pro +# Template: lib +# Command: /usr/bin/qmake-qt5 -o Makefile paulcommon.pro +############################################################################# + +MAKEFILE = Makefile + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DPAULCOMMON_LIBRARY -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB +CFLAGS = -m64 -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES) +CXXFLAGS = -m64 -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES) +INCPATH = -I/usr/lib64/qt5/mkspecs/linux-g++-64 -I. -I. -I/usr/include/qt5/lppmon/parameterdump -I../../DEV_PLE/header -I/usr/include/qt5 -I/usr/include/qt5/QtPrintSupport -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I. +LINK = g++ +LFLAGS = -m64 -Wl,-O1 -Wl,-z,relro -shared -Wl,-soname,libpaulcommon.so.1 +LIBS = $(SUBLIBS) -L/usr/X11R6/lib64 -lparameterdump -lQt5PrintSupport -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread +AR = ar cqs +RANLIB = +QMAKE = /usr/bin/qmake-qt5 +TAR = tar -cf +COMPRESS = gzip -9f +COPY = cp -f +SED = sed +COPY_FILE = cp -f +COPY_DIR = cp -f -R +STRIP = strip +INSTALL_FILE = install -m 644 -p +INSTALL_DIR = $(COPY_DIR) +INSTALL_PROGRAM = install -m 755 -p +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p + +####### Output directory + +OBJECTS_DIR = ./ + +####### Files + +SOURCES = systemtime.cpp \ + arbitrarytime.cpp moc_systemtime.cpp \ + moc_arbitrarytime.cpp +OBJECTS = systemtime.o \ + arbitrarytime.o \ + moc_systemtime.o \ + moc_arbitrarytime.o +DIST = /usr/lib64/qt5/mkspecs/features/spec_pre.prf \ + /usr/lib64/qt5/mkspecs/common/shell-unix.conf \ + /usr/lib64/qt5/mkspecs/common/unix.conf \ + /usr/lib64/qt5/mkspecs/common/linux.conf \ + /usr/lib64/qt5/mkspecs/common/gcc-base.conf \ + /usr/lib64/qt5/mkspecs/common/gcc-base-unix.conf \ + /usr/lib64/qt5/mkspecs/common/g++-base.conf \ + /usr/lib64/qt5/mkspecs/common/g++-unix.conf \ + /usr/lib64/qt5/mkspecs/qconfig.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_accountsservice.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_clucene_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_compositor.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_configuration.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_core.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_core_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_dbus.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_declarative.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_declarative_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_designer.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_designer_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_gui.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_gui_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_help.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_help_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_network.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_network_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_opengl.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qml.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qml_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quick.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_script.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_script_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_svg.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_svg_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_testlib.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_uitools.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_uitools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkit.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkit_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_widgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri \ + /usr/lib64/qt5/mkspecs/features/qt_functions.prf \ + /usr/lib64/qt5/mkspecs/features/qt_config.prf \ + /usr/lib64/qt5/mkspecs/linux-g++-64/qmake.conf \ + /usr/lib64/qt5/mkspecs/features/spec_post.prf \ + /usr/lib64/qt5/mkspecs/features/exclusive_builds.prf \ + /usr/lib64/qt5/mkspecs/features/default_pre.prf \ + /usr/lib64/qt5/mkspecs/features/resolve_config.prf \ + /usr/lib64/qt5/mkspecs/features/default_post.prf \ + /usr/lib64/qt5/mkspecs/features/unix/gdb_dwarf_index.prf \ + /usr/lib64/qt5/mkspecs/features/warn_on.prf \ + /usr/lib64/qt5/mkspecs/features/qt.prf \ + /usr/lib64/qt5/mkspecs/features/resources.prf \ + /usr/lib64/qt5/mkspecs/features/moc.prf \ + /usr/lib64/qt5/mkspecs/features/unix/opengl.prf \ + /usr/lib64/qt5/mkspecs/features/uic.prf \ + /usr/lib64/qt5/mkspecs/features/unix/thread.prf \ + /usr/lib64/qt5/mkspecs/features/testcase_targets.prf \ + /usr/lib64/qt5/mkspecs/features/exceptions.prf \ + /usr/lib64/qt5/mkspecs/features/yacc.prf \ + /usr/lib64/qt5/mkspecs/features/lex.prf \ + paulcommon.pro \ + paulcommon.pro +QMAKE_TARGET = paulcommon +DESTDIR = #avoid trailing-slash linebreak +TARGET = libpaulcommon.so.1.0.0 +TARGETA = libpaulcommon.a +TARGETD = libpaulcommon.so.1.0.0 +TARGET0 = libpaulcommon.so +TARGET1 = libpaulcommon.so.1 +TARGET2 = libpaulcommon.so.1.0 + + +first: all +####### Implicit rules + +.SUFFIXES: .o .c .cpp .cc .cxx .C + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" + +####### Build rules + +all: Makefile $(TARGET) + +$(TARGET): $(OBJECTS) $(SUBLIBS) $(OBJCOMP) + -$(DEL_FILE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2) + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP) + -ln -s $(TARGET) $(TARGET0) + -ln -s $(TARGET) $(TARGET1) + -ln -s $(TARGET) $(TARGET2) + + + +staticlib: $(TARGETA) + +$(TARGETA): $(OBJECTS) $(OBJCOMP) + -$(DEL_FILE) $(TARGETA) + $(AR) $(TARGETA) $(OBJECTS) + +Makefile: paulcommon.pro /usr/lib64/qt5/mkspecs/linux-g++-64/qmake.conf /usr/lib64/qt5/mkspecs/features/spec_pre.prf \ + /usr/lib64/qt5/mkspecs/common/shell-unix.conf \ + /usr/lib64/qt5/mkspecs/common/unix.conf \ + /usr/lib64/qt5/mkspecs/common/linux.conf \ + /usr/lib64/qt5/mkspecs/common/gcc-base.conf \ + /usr/lib64/qt5/mkspecs/common/gcc-base-unix.conf \ + /usr/lib64/qt5/mkspecs/common/g++-base.conf \ + /usr/lib64/qt5/mkspecs/common/g++-unix.conf \ + /usr/lib64/qt5/mkspecs/qconfig.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_accountsservice.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_clucene_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_compositor.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_configuration.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_core.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_core_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_dbus.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_declarative.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_declarative_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_designer.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_designer_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_gui.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_gui_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_help.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_help_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_network.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_network_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_opengl.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qml.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qml_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quick.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_script.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_script_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_svg.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_svg_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_testlib.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_uitools.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_uitools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkit.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkit_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_widgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri \ + /usr/lib64/qt5/mkspecs/features/qt_functions.prf \ + /usr/lib64/qt5/mkspecs/features/qt_config.prf \ + /usr/lib64/qt5/mkspecs/linux-g++-64/qmake.conf \ + /usr/lib64/qt5/mkspecs/features/spec_post.prf \ + /usr/lib64/qt5/mkspecs/features/exclusive_builds.prf \ + /usr/lib64/qt5/mkspecs/features/default_pre.prf \ + /usr/lib64/qt5/mkspecs/features/resolve_config.prf \ + /usr/lib64/qt5/mkspecs/features/default_post.prf \ + /usr/lib64/qt5/mkspecs/features/unix/gdb_dwarf_index.prf \ + /usr/lib64/qt5/mkspecs/features/warn_on.prf \ + /usr/lib64/qt5/mkspecs/features/qt.prf \ + /usr/lib64/qt5/mkspecs/features/resources.prf \ + /usr/lib64/qt5/mkspecs/features/moc.prf \ + /usr/lib64/qt5/mkspecs/features/unix/opengl.prf \ + /usr/lib64/qt5/mkspecs/features/uic.prf \ + /usr/lib64/qt5/mkspecs/features/unix/thread.prf \ + /usr/lib64/qt5/mkspecs/features/testcase_targets.prf \ + /usr/lib64/qt5/mkspecs/features/exceptions.prf \ + /usr/lib64/qt5/mkspecs/features/yacc.prf \ + /usr/lib64/qt5/mkspecs/features/lex.prf \ + paulcommon.pro \ + /lib64/libQt5PrintSupport.prl \ + /lib64/libQt5Widgets.prl \ + /lib64/libQt5Gui.prl \ + /lib64/libQt5Core.prl + $(QMAKE) -o Makefile paulcommon.pro +/usr/lib64/qt5/mkspecs/features/spec_pre.prf: +/usr/lib64/qt5/mkspecs/common/shell-unix.conf: +/usr/lib64/qt5/mkspecs/common/unix.conf: +/usr/lib64/qt5/mkspecs/common/linux.conf: +/usr/lib64/qt5/mkspecs/common/gcc-base.conf: +/usr/lib64/qt5/mkspecs/common/gcc-base-unix.conf: +/usr/lib64/qt5/mkspecs/common/g++-base.conf: +/usr/lib64/qt5/mkspecs/common/g++-unix.conf: +/usr/lib64/qt5/mkspecs/qconfig.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_accountsservice.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_clucene_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_compositor.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_configuration.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_core.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_core_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_dbus.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_dbus_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_declarative.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_declarative_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_designer.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_designer_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_gui.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_gui_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_help.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_help_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_network.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_network_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_opengl.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_opengl_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qml.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qml_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_quick.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_script.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_script_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_svg.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_svg_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_testlib.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_testlib_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_uitools.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_uitools_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_webkit.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_webkit_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_widgets.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_widgets_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri: +/usr/lib64/qt5/mkspecs/features/qt_functions.prf: +/usr/lib64/qt5/mkspecs/features/qt_config.prf: +/usr/lib64/qt5/mkspecs/linux-g++-64/qmake.conf: +/usr/lib64/qt5/mkspecs/features/spec_post.prf: +/usr/lib64/qt5/mkspecs/features/exclusive_builds.prf: +/usr/lib64/qt5/mkspecs/features/default_pre.prf: +/usr/lib64/qt5/mkspecs/features/resolve_config.prf: +/usr/lib64/qt5/mkspecs/features/default_post.prf: +/usr/lib64/qt5/mkspecs/features/unix/gdb_dwarf_index.prf: +/usr/lib64/qt5/mkspecs/features/warn_on.prf: +/usr/lib64/qt5/mkspecs/features/qt.prf: +/usr/lib64/qt5/mkspecs/features/resources.prf: +/usr/lib64/qt5/mkspecs/features/moc.prf: +/usr/lib64/qt5/mkspecs/features/unix/opengl.prf: +/usr/lib64/qt5/mkspecs/features/uic.prf: +/usr/lib64/qt5/mkspecs/features/unix/thread.prf: +/usr/lib64/qt5/mkspecs/features/testcase_targets.prf: +/usr/lib64/qt5/mkspecs/features/exceptions.prf: +/usr/lib64/qt5/mkspecs/features/yacc.prf: +/usr/lib64/qt5/mkspecs/features/lex.prf: +paulcommon.pro: +/lib64/libQt5PrintSupport.prl: +/lib64/libQt5Widgets.prl: +/lib64/libQt5Gui.prl: +/lib64/libQt5Core.prl: +qmake: FORCE + @$(QMAKE) -o Makefile paulcommon.pro + +qmake_all: FORCE + +dist: + @test -d .tmp/paulcommon1.0.0 || mkdir -p .tmp/paulcommon1.0.0 + $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/paulcommon1.0.0/ && $(COPY_FILE) --parents systemtime.h paulcommon_global.h arbitrarytime.h ../../DEV_PLE/header/TC_types.h .tmp/paulcommon1.0.0/ && $(COPY_FILE) --parents systemtime.cpp arbitrarytime.cpp .tmp/paulcommon1.0.0/ && (cd `dirname .tmp/paulcommon1.0.0` && $(TAR) paulcommon1.0.0.tar paulcommon1.0.0 && $(COMPRESS) paulcommon1.0.0.tar) && $(MOVE) `dirname .tmp/paulcommon1.0.0`/paulcommon1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/paulcommon1.0.0 + + +clean:compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +####### Sub-libraries + +distclean: clean + -$(DEL_FILE) $(TARGET) + -$(DEL_FILE) $(TARGET0) $(TARGET1) $(TARGET2) $(TARGETA) + -$(DEL_FILE) Makefile + + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +check: first + +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_moc_header_make_all: moc_systemtime.cpp moc_arbitrarytime.cpp +compiler_moc_header_clean: + -$(DEL_FILE) moc_systemtime.cpp moc_arbitrarytime.cpp +moc_systemtime.cpp: paulcommon_global.h \ + /usr/include/qt5/QtCore/qglobal.h \ + /usr/include/qt5/QtCore/qconfig.h \ + /usr/include/qt5/QtCore/qconfig-64.h \ + /usr/include/qt5/QtCore/qfeatures.h \ + /usr/include/qt5/QtCore/qsystemdetection.h \ + /usr/include/qt5/QtCore/qprocessordetection.h \ + /usr/include/qt5/QtCore/qcompilerdetection.h \ + /usr/include/qt5/QtCore/qglobalstatic.h \ + /usr/include/qt5/QtCore/qatomic.h \ + /usr/include/qt5/QtCore/qbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_bootstrap.h \ + /usr/include/qt5/QtCore/qgenericatomic.h \ + /usr/include/qt5/QtCore/qatomic_msvc.h \ + /usr/include/qt5/QtCore/qatomic_integrity.h \ + /usr/include/qt5/QtCore/qoldbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_vxworks.h \ + /usr/include/qt5/QtCore/qatomic_power.h \ + /usr/include/qt5/QtCore/qatomic_alpha.h \ + /usr/include/qt5/QtCore/qatomic_armv7.h \ + /usr/include/qt5/QtCore/qatomic_armv6.h \ + /usr/include/qt5/QtCore/qatomic_armv5.h \ + /usr/include/qt5/QtCore/qatomic_bfin.h \ + /usr/include/qt5/QtCore/qatomic_ia64.h \ + /usr/include/qt5/QtCore/qatomic_mips.h \ + /usr/include/qt5/QtCore/qatomic_s390.h \ + /usr/include/qt5/QtCore/qatomic_sh4a.h \ + /usr/include/qt5/QtCore/qatomic_sparc.h \ + /usr/include/qt5/QtCore/qatomic_x86.h \ + /usr/include/qt5/QtCore/qatomic_cxx11.h \ + /usr/include/qt5/QtCore/qatomic_gcc.h \ + /usr/include/qt5/QtCore/qatomic_unix.h \ + /usr/include/qt5/QtCore/qmutex.h \ + /usr/include/qt5/QtCore/qlogging.h \ + /usr/include/qt5/QtCore/qflags.h \ + /usr/include/qt5/QtCore/qtypeinfo.h \ + /usr/include/qt5/QtCore/qtypetraits.h \ + /usr/include/qt5/QtCore/qsysinfo.h \ + /usr/include/qt5/QtWidgets/QWidget \ + /usr/include/qt5/QtWidgets/qwidget.h \ + /usr/include/qt5/QtGui/qwindowdefs.h \ + /usr/include/qt5/QtCore/qobjectdefs.h \ + /usr/include/qt5/QtCore/qnamespace.h \ + /usr/include/qt5/QtCore/qobjectdefs_impl.h \ + /usr/include/qt5/QtGui/qwindowdefs_win.h \ + /usr/include/qt5/QtCore/qobject.h \ + /usr/include/qt5/QtCore/qstring.h \ + /usr/include/qt5/QtCore/qchar.h \ + /usr/include/qt5/QtCore/qbytearray.h \ + /usr/include/qt5/QtCore/qrefcount.h \ + /usr/include/qt5/QtCore/qarraydata.h \ + /usr/include/qt5/QtCore/qstringbuilder.h \ + /usr/include/qt5/QtCore/qlist.h \ + /usr/include/qt5/QtCore/qalgorithms.h \ + /usr/include/qt5/QtCore/qiterator.h \ + /usr/include/qt5/QtCore/qcoreevent.h \ + /usr/include/qt5/QtCore/qscopedpointer.h \ + /usr/include/qt5/QtCore/qmetatype.h \ + /usr/include/qt5/QtCore/qvarlengtharray.h \ + /usr/include/qt5/QtCore/qcontainerfwd.h \ + /usr/include/qt5/QtCore/qisenum.h \ + /usr/include/qt5/QtCore/qobject_impl.h \ + /usr/include/qt5/QtCore/qmargins.h \ + /usr/include/qt5/QtCore/qrect.h \ + /usr/include/qt5/QtCore/qsize.h \ + /usr/include/qt5/QtCore/qpoint.h \ + /usr/include/qt5/QtGui/qpaintdevice.h \ + /usr/include/qt5/QtGui/qpalette.h \ + /usr/include/qt5/QtGui/qcolor.h \ + /usr/include/qt5/QtGui/qrgb.h \ + /usr/include/qt5/QtCore/qstringlist.h \ + /usr/include/qt5/QtCore/qdatastream.h \ + /usr/include/qt5/QtCore/qiodevice.h \ + /usr/include/qt5/QtCore/qpair.h \ + /usr/include/qt5/QtCore/qregexp.h \ + /usr/include/qt5/QtCore/qstringmatcher.h \ + /usr/include/qt5/QtGui/qbrush.h \ + /usr/include/qt5/QtCore/qvector.h \ + /usr/include/qt5/QtGui/qmatrix.h \ + /usr/include/qt5/QtGui/qpolygon.h \ + /usr/include/qt5/QtGui/qregion.h \ + /usr/include/qt5/QtCore/qline.h \ + /usr/include/qt5/QtGui/qtransform.h \ + /usr/include/qt5/QtGui/qpainterpath.h \ + /usr/include/qt5/QtGui/qimage.h \ + /usr/include/qt5/QtGui/qpixmap.h \ + /usr/include/qt5/QtCore/qsharedpointer.h \ + /usr/include/qt5/QtCore/qshareddata.h \ + /usr/include/qt5/QtCore/qsharedpointer_impl.h \ + /usr/include/qt5/QtCore/qhash.h \ + /usr/include/qt5/QtGui/qfont.h \ + /usr/include/qt5/QtGui/qfontmetrics.h \ + /usr/include/qt5/QtGui/qfontinfo.h \ + /usr/include/qt5/QtWidgets/qsizepolicy.h \ + /usr/include/qt5/QtGui/qcursor.h \ + /usr/include/qt5/QtGui/qkeysequence.h \ + /usr/include/qt5/QtGui/qevent.h \ + /usr/include/qt5/QtCore/qvariant.h \ + /usr/include/qt5/QtCore/qmap.h \ + /usr/include/qt5/QtCore/qdebug.h \ + /usr/include/qt5/QtCore/qtextstream.h \ + /usr/include/qt5/QtCore/qlocale.h \ + /usr/include/qt5/QtCore/qset.h \ + /usr/include/qt5/QtCore/qcontiguouscache.h \ + /usr/include/qt5/QtCore/qurl.h \ + /usr/include/qt5/QtCore/qurlquery.h \ + /usr/include/qt5/QtCore/qfile.h \ + /usr/include/qt5/QtCore/qfiledevice.h \ + /usr/include/qt5/QtGui/qvector2d.h \ + /usr/include/qt5/QtGui/qtouchdevice.h \ + /usr/include/qt5/QtWidgets/QLabel \ + /usr/include/qt5/QtWidgets/qlabel.h \ + /usr/include/qt5/QtWidgets/qframe.h \ + /usr/include/qt5/QtWidgets/QGridLayout \ + /usr/include/qt5/QtWidgets/qgridlayout.h \ + /usr/include/qt5/QtWidgets/qlayout.h \ + /usr/include/qt5/QtWidgets/qlayoutitem.h \ + /usr/include/qt5/QtWidgets/qboxlayout.h \ + /usr/include/qt5/QtWidgets/QLineEdit \ + /usr/include/qt5/QtWidgets/qlineedit.h \ + /usr/include/qt5/QtGui/qtextcursor.h \ + /usr/include/qt5/QtGui/qtextformat.h \ + /usr/include/qt5/QtGui/qpen.h \ + /usr/include/qt5/QtGui/qtextoption.h \ + /usr/include/qt5/QtGui/QRegExpValidator \ + /usr/include/qt5/QtGui/qvalidator.h \ + /usr/include/qt5/QtCore/qregularexpression.h \ + arbitrarytime.h \ + /usr/include/qt5/QtWidgets/QHBoxLayout \ + /usr/include/qt5/QtWidgets/QVBoxLayout \ + /usr/include/qt5/lppmon/parameterdump/tcpackettosend.h \ + /usr/include/qt5/QtCore/QObject \ + /usr/include/qt5/lppmon/parameterdump/parameterdump_global.h \ + ../../DEV_PLE/header/TC_types.h \ + ../../DEV_PLE/header/ccsds_types.h \ + systemtime.h + /usr/lib64/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/lib/gcc/include/c++/4.8.2 -I/usr/lib/gcc/include/c++/4.8.2/x86_64-redhat-linux -I/usr/lib/gcc/include/c++/4.8.2/backward -I/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include -I/usr/local/include -I/usr/include systemtime.h -o moc_systemtime.cpp + +moc_arbitrarytime.cpp: paulcommon_global.h \ + /usr/include/qt5/QtCore/qglobal.h \ + /usr/include/qt5/QtCore/qconfig.h \ + /usr/include/qt5/QtCore/qconfig-64.h \ + /usr/include/qt5/QtCore/qfeatures.h \ + /usr/include/qt5/QtCore/qsystemdetection.h \ + /usr/include/qt5/QtCore/qprocessordetection.h \ + /usr/include/qt5/QtCore/qcompilerdetection.h \ + /usr/include/qt5/QtCore/qglobalstatic.h \ + /usr/include/qt5/QtCore/qatomic.h \ + /usr/include/qt5/QtCore/qbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_bootstrap.h \ + /usr/include/qt5/QtCore/qgenericatomic.h \ + /usr/include/qt5/QtCore/qatomic_msvc.h \ + /usr/include/qt5/QtCore/qatomic_integrity.h \ + /usr/include/qt5/QtCore/qoldbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_vxworks.h \ + /usr/include/qt5/QtCore/qatomic_power.h \ + /usr/include/qt5/QtCore/qatomic_alpha.h \ + /usr/include/qt5/QtCore/qatomic_armv7.h \ + /usr/include/qt5/QtCore/qatomic_armv6.h \ + /usr/include/qt5/QtCore/qatomic_armv5.h \ + /usr/include/qt5/QtCore/qatomic_bfin.h \ + /usr/include/qt5/QtCore/qatomic_ia64.h \ + /usr/include/qt5/QtCore/qatomic_mips.h \ + /usr/include/qt5/QtCore/qatomic_s390.h \ + /usr/include/qt5/QtCore/qatomic_sh4a.h \ + /usr/include/qt5/QtCore/qatomic_sparc.h \ + /usr/include/qt5/QtCore/qatomic_x86.h \ + /usr/include/qt5/QtCore/qatomic_cxx11.h \ + /usr/include/qt5/QtCore/qatomic_gcc.h \ + /usr/include/qt5/QtCore/qatomic_unix.h \ + /usr/include/qt5/QtCore/qmutex.h \ + /usr/include/qt5/QtCore/qlogging.h \ + /usr/include/qt5/QtCore/qflags.h \ + /usr/include/qt5/QtCore/qtypeinfo.h \ + /usr/include/qt5/QtCore/qtypetraits.h \ + /usr/include/qt5/QtCore/qsysinfo.h \ + /usr/include/qt5/QtWidgets/QWidget \ + /usr/include/qt5/QtWidgets/qwidget.h \ + /usr/include/qt5/QtGui/qwindowdefs.h \ + /usr/include/qt5/QtCore/qobjectdefs.h \ + /usr/include/qt5/QtCore/qnamespace.h \ + /usr/include/qt5/QtCore/qobjectdefs_impl.h \ + /usr/include/qt5/QtGui/qwindowdefs_win.h \ + /usr/include/qt5/QtCore/qobject.h \ + /usr/include/qt5/QtCore/qstring.h \ + /usr/include/qt5/QtCore/qchar.h \ + /usr/include/qt5/QtCore/qbytearray.h \ + /usr/include/qt5/QtCore/qrefcount.h \ + /usr/include/qt5/QtCore/qarraydata.h \ + /usr/include/qt5/QtCore/qstringbuilder.h \ + /usr/include/qt5/QtCore/qlist.h \ + /usr/include/qt5/QtCore/qalgorithms.h \ + /usr/include/qt5/QtCore/qiterator.h \ + /usr/include/qt5/QtCore/qcoreevent.h \ + /usr/include/qt5/QtCore/qscopedpointer.h \ + /usr/include/qt5/QtCore/qmetatype.h \ + /usr/include/qt5/QtCore/qvarlengtharray.h \ + /usr/include/qt5/QtCore/qcontainerfwd.h \ + /usr/include/qt5/QtCore/qisenum.h \ + /usr/include/qt5/QtCore/qobject_impl.h \ + /usr/include/qt5/QtCore/qmargins.h \ + /usr/include/qt5/QtCore/qrect.h \ + /usr/include/qt5/QtCore/qsize.h \ + /usr/include/qt5/QtCore/qpoint.h \ + /usr/include/qt5/QtGui/qpaintdevice.h \ + /usr/include/qt5/QtGui/qpalette.h \ + /usr/include/qt5/QtGui/qcolor.h \ + /usr/include/qt5/QtGui/qrgb.h \ + /usr/include/qt5/QtCore/qstringlist.h \ + /usr/include/qt5/QtCore/qdatastream.h \ + /usr/include/qt5/QtCore/qiodevice.h \ + /usr/include/qt5/QtCore/qpair.h \ + /usr/include/qt5/QtCore/qregexp.h \ + /usr/include/qt5/QtCore/qstringmatcher.h \ + /usr/include/qt5/QtGui/qbrush.h \ + /usr/include/qt5/QtCore/qvector.h \ + /usr/include/qt5/QtGui/qmatrix.h \ + /usr/include/qt5/QtGui/qpolygon.h \ + /usr/include/qt5/QtGui/qregion.h \ + /usr/include/qt5/QtCore/qline.h \ + /usr/include/qt5/QtGui/qtransform.h \ + /usr/include/qt5/QtGui/qpainterpath.h \ + /usr/include/qt5/QtGui/qimage.h \ + /usr/include/qt5/QtGui/qpixmap.h \ + /usr/include/qt5/QtCore/qsharedpointer.h \ + /usr/include/qt5/QtCore/qshareddata.h \ + /usr/include/qt5/QtCore/qsharedpointer_impl.h \ + /usr/include/qt5/QtCore/qhash.h \ + /usr/include/qt5/QtGui/qfont.h \ + /usr/include/qt5/QtGui/qfontmetrics.h \ + /usr/include/qt5/QtGui/qfontinfo.h \ + /usr/include/qt5/QtWidgets/qsizepolicy.h \ + /usr/include/qt5/QtGui/qcursor.h \ + /usr/include/qt5/QtGui/qkeysequence.h \ + /usr/include/qt5/QtGui/qevent.h \ + /usr/include/qt5/QtCore/qvariant.h \ + /usr/include/qt5/QtCore/qmap.h \ + /usr/include/qt5/QtCore/qdebug.h \ + /usr/include/qt5/QtCore/qtextstream.h \ + /usr/include/qt5/QtCore/qlocale.h \ + /usr/include/qt5/QtCore/qset.h \ + /usr/include/qt5/QtCore/qcontiguouscache.h \ + /usr/include/qt5/QtCore/qurl.h \ + /usr/include/qt5/QtCore/qurlquery.h \ + /usr/include/qt5/QtCore/qfile.h \ + /usr/include/qt5/QtCore/qfiledevice.h \ + /usr/include/qt5/QtGui/qvector2d.h \ + /usr/include/qt5/QtGui/qtouchdevice.h \ + /usr/include/qt5/QtWidgets/QLabel \ + /usr/include/qt5/QtWidgets/qlabel.h \ + /usr/include/qt5/QtWidgets/qframe.h \ + /usr/include/qt5/QtWidgets/QHBoxLayout \ + /usr/include/qt5/QtWidgets/qboxlayout.h \ + /usr/include/qt5/QtWidgets/qlayout.h \ + /usr/include/qt5/QtWidgets/qlayoutitem.h \ + /usr/include/qt5/QtWidgets/qgridlayout.h \ + /usr/include/qt5/QtWidgets/QVBoxLayout \ + /usr/include/qt5/QtWidgets/QLineEdit \ + /usr/include/qt5/QtWidgets/qlineedit.h \ + /usr/include/qt5/QtGui/qtextcursor.h \ + /usr/include/qt5/QtGui/qtextformat.h \ + /usr/include/qt5/QtGui/qpen.h \ + /usr/include/qt5/QtGui/qtextoption.h \ + /usr/include/qt5/QtGui/QRegExpValidator \ + /usr/include/qt5/QtGui/qvalidator.h \ + /usr/include/qt5/QtCore/qregularexpression.h \ + /usr/include/qt5/lppmon/parameterdump/tcpackettosend.h \ + /usr/include/qt5/QtCore/QObject \ + /usr/include/qt5/lppmon/parameterdump/parameterdump_global.h \ + ../../DEV_PLE/header/TC_types.h \ + ../../DEV_PLE/header/ccsds_types.h \ + arbitrarytime.h + /usr/lib64/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/lib/gcc/include/c++/4.8.2 -I/usr/lib/gcc/include/c++/4.8.2/x86_64-redhat-linux -I/usr/lib/gcc/include/c++/4.8.2/backward -I/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include -I/usr/local/include -I/usr/include arbitrarytime.h -o moc_arbitrarytime.cpp + +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: +compiler_uic_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_moc_header_clean + +####### Compile + +systemtime.o: systemtime.cpp systemtime.h \ + paulcommon_global.h \ + /usr/include/qt5/QtCore/qglobal.h \ + /usr/include/qt5/QtCore/qconfig.h \ + /usr/include/qt5/QtCore/qconfig-64.h \ + /usr/include/qt5/QtCore/qfeatures.h \ + /usr/include/qt5/QtCore/qsystemdetection.h \ + /usr/include/qt5/QtCore/qprocessordetection.h \ + /usr/include/qt5/QtCore/qcompilerdetection.h \ + /usr/include/qt5/QtCore/qglobalstatic.h \ + /usr/include/qt5/QtCore/qatomic.h \ + /usr/include/qt5/QtCore/qbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_bootstrap.h \ + /usr/include/qt5/QtCore/qgenericatomic.h \ + /usr/include/qt5/QtCore/qatomic_msvc.h \ + /usr/include/qt5/QtCore/qatomic_integrity.h \ + /usr/include/qt5/QtCore/qoldbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_vxworks.h \ + /usr/include/qt5/QtCore/qatomic_power.h \ + /usr/include/qt5/QtCore/qatomic_alpha.h \ + /usr/include/qt5/QtCore/qatomic_armv7.h \ + /usr/include/qt5/QtCore/qatomic_armv6.h \ + /usr/include/qt5/QtCore/qatomic_armv5.h \ + /usr/include/qt5/QtCore/qatomic_bfin.h \ + /usr/include/qt5/QtCore/qatomic_ia64.h \ + /usr/include/qt5/QtCore/qatomic_mips.h \ + /usr/include/qt5/QtCore/qatomic_s390.h \ + /usr/include/qt5/QtCore/qatomic_sh4a.h \ + /usr/include/qt5/QtCore/qatomic_sparc.h \ + /usr/include/qt5/QtCore/qatomic_x86.h \ + /usr/include/qt5/QtCore/qatomic_cxx11.h \ + /usr/include/qt5/QtCore/qatomic_gcc.h \ + /usr/include/qt5/QtCore/qatomic_unix.h \ + /usr/include/qt5/QtCore/qmutex.h \ + /usr/include/qt5/QtCore/qlogging.h \ + /usr/include/qt5/QtCore/qflags.h \ + /usr/include/qt5/QtCore/qtypeinfo.h \ + /usr/include/qt5/QtCore/qtypetraits.h \ + /usr/include/qt5/QtCore/qsysinfo.h \ + /usr/include/qt5/QtWidgets/QWidget \ + /usr/include/qt5/QtWidgets/qwidget.h \ + /usr/include/qt5/QtGui/qwindowdefs.h \ + /usr/include/qt5/QtCore/qobjectdefs.h \ + /usr/include/qt5/QtCore/qnamespace.h \ + /usr/include/qt5/QtCore/qobjectdefs_impl.h \ + /usr/include/qt5/QtGui/qwindowdefs_win.h \ + /usr/include/qt5/QtCore/qobject.h \ + /usr/include/qt5/QtCore/qstring.h \ + /usr/include/qt5/QtCore/qchar.h \ + /usr/include/qt5/QtCore/qbytearray.h \ + /usr/include/qt5/QtCore/qrefcount.h \ + /usr/include/qt5/QtCore/qarraydata.h \ + /usr/include/qt5/QtCore/qstringbuilder.h \ + /usr/include/qt5/QtCore/qlist.h \ + /usr/include/qt5/QtCore/qalgorithms.h \ + /usr/include/qt5/QtCore/qiterator.h \ + /usr/include/qt5/QtCore/qcoreevent.h \ + /usr/include/qt5/QtCore/qscopedpointer.h \ + /usr/include/qt5/QtCore/qmetatype.h \ + /usr/include/qt5/QtCore/qvarlengtharray.h \ + /usr/include/qt5/QtCore/qcontainerfwd.h \ + /usr/include/qt5/QtCore/qisenum.h \ + /usr/include/qt5/QtCore/qobject_impl.h \ + /usr/include/qt5/QtCore/qmargins.h \ + /usr/include/qt5/QtCore/qrect.h \ + /usr/include/qt5/QtCore/qsize.h \ + /usr/include/qt5/QtCore/qpoint.h \ + /usr/include/qt5/QtGui/qpaintdevice.h \ + /usr/include/qt5/QtGui/qpalette.h \ + /usr/include/qt5/QtGui/qcolor.h \ + /usr/include/qt5/QtGui/qrgb.h \ + /usr/include/qt5/QtCore/qstringlist.h \ + /usr/include/qt5/QtCore/qdatastream.h \ + /usr/include/qt5/QtCore/qiodevice.h \ + /usr/include/qt5/QtCore/qpair.h \ + /usr/include/qt5/QtCore/qregexp.h \ + /usr/include/qt5/QtCore/qstringmatcher.h \ + /usr/include/qt5/QtGui/qbrush.h \ + /usr/include/qt5/QtCore/qvector.h \ + /usr/include/qt5/QtGui/qmatrix.h \ + /usr/include/qt5/QtGui/qpolygon.h \ + /usr/include/qt5/QtGui/qregion.h \ + /usr/include/qt5/QtCore/qline.h \ + /usr/include/qt5/QtGui/qtransform.h \ + /usr/include/qt5/QtGui/qpainterpath.h \ + /usr/include/qt5/QtGui/qimage.h \ + /usr/include/qt5/QtGui/qpixmap.h \ + /usr/include/qt5/QtCore/qsharedpointer.h \ + /usr/include/qt5/QtCore/qshareddata.h \ + /usr/include/qt5/QtCore/qsharedpointer_impl.h \ + /usr/include/qt5/QtCore/qhash.h \ + /usr/include/qt5/QtGui/qfont.h \ + /usr/include/qt5/QtGui/qfontmetrics.h \ + /usr/include/qt5/QtGui/qfontinfo.h \ + /usr/include/qt5/QtWidgets/qsizepolicy.h \ + /usr/include/qt5/QtGui/qcursor.h \ + /usr/include/qt5/QtGui/qkeysequence.h \ + /usr/include/qt5/QtGui/qevent.h \ + /usr/include/qt5/QtCore/qvariant.h \ + /usr/include/qt5/QtCore/qmap.h \ + /usr/include/qt5/QtCore/qdebug.h \ + /usr/include/qt5/QtCore/qtextstream.h \ + /usr/include/qt5/QtCore/qlocale.h \ + /usr/include/qt5/QtCore/qset.h \ + /usr/include/qt5/QtCore/qcontiguouscache.h \ + /usr/include/qt5/QtCore/qurl.h \ + /usr/include/qt5/QtCore/qurlquery.h \ + /usr/include/qt5/QtCore/qfile.h \ + /usr/include/qt5/QtCore/qfiledevice.h \ + /usr/include/qt5/QtGui/qvector2d.h \ + /usr/include/qt5/QtGui/qtouchdevice.h \ + /usr/include/qt5/QtWidgets/QLabel \ + /usr/include/qt5/QtWidgets/qlabel.h \ + /usr/include/qt5/QtWidgets/qframe.h \ + /usr/include/qt5/QtWidgets/QGridLayout \ + /usr/include/qt5/QtWidgets/qgridlayout.h \ + /usr/include/qt5/QtWidgets/qlayout.h \ + /usr/include/qt5/QtWidgets/qlayoutitem.h \ + /usr/include/qt5/QtWidgets/qboxlayout.h \ + /usr/include/qt5/QtWidgets/QLineEdit \ + /usr/include/qt5/QtWidgets/qlineedit.h \ + /usr/include/qt5/QtGui/qtextcursor.h \ + /usr/include/qt5/QtGui/qtextformat.h \ + /usr/include/qt5/QtGui/qpen.h \ + /usr/include/qt5/QtGui/qtextoption.h \ + /usr/include/qt5/QtGui/QRegExpValidator \ + /usr/include/qt5/QtGui/qvalidator.h \ + /usr/include/qt5/QtCore/qregularexpression.h \ + arbitrarytime.h \ + /usr/include/qt5/QtWidgets/QHBoxLayout \ + /usr/include/qt5/QtWidgets/QVBoxLayout \ + /usr/include/qt5/lppmon/parameterdump/tcpackettosend.h \ + /usr/include/qt5/QtCore/QObject \ + /usr/include/qt5/lppmon/parameterdump/parameterdump_global.h \ + ../../DEV_PLE/header/TC_types.h \ + ../../DEV_PLE/header/ccsds_types.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o systemtime.o systemtime.cpp + +arbitrarytime.o: arbitrarytime.cpp arbitrarytime.h \ + paulcommon_global.h \ + /usr/include/qt5/QtCore/qglobal.h \ + /usr/include/qt5/QtCore/qconfig.h \ + /usr/include/qt5/QtCore/qconfig-64.h \ + /usr/include/qt5/QtCore/qfeatures.h \ + /usr/include/qt5/QtCore/qsystemdetection.h \ + /usr/include/qt5/QtCore/qprocessordetection.h \ + /usr/include/qt5/QtCore/qcompilerdetection.h \ + /usr/include/qt5/QtCore/qglobalstatic.h \ + /usr/include/qt5/QtCore/qatomic.h \ + /usr/include/qt5/QtCore/qbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_bootstrap.h \ + /usr/include/qt5/QtCore/qgenericatomic.h \ + /usr/include/qt5/QtCore/qatomic_msvc.h \ + /usr/include/qt5/QtCore/qatomic_integrity.h \ + /usr/include/qt5/QtCore/qoldbasicatomic.h \ + /usr/include/qt5/QtCore/qatomic_vxworks.h \ + /usr/include/qt5/QtCore/qatomic_power.h \ + /usr/include/qt5/QtCore/qatomic_alpha.h \ + /usr/include/qt5/QtCore/qatomic_armv7.h \ + /usr/include/qt5/QtCore/qatomic_armv6.h \ + /usr/include/qt5/QtCore/qatomic_armv5.h \ + /usr/include/qt5/QtCore/qatomic_bfin.h \ + /usr/include/qt5/QtCore/qatomic_ia64.h \ + /usr/include/qt5/QtCore/qatomic_mips.h \ + /usr/include/qt5/QtCore/qatomic_s390.h \ + /usr/include/qt5/QtCore/qatomic_sh4a.h \ + /usr/include/qt5/QtCore/qatomic_sparc.h \ + /usr/include/qt5/QtCore/qatomic_x86.h \ + /usr/include/qt5/QtCore/qatomic_cxx11.h \ + /usr/include/qt5/QtCore/qatomic_gcc.h \ + /usr/include/qt5/QtCore/qatomic_unix.h \ + /usr/include/qt5/QtCore/qmutex.h \ + /usr/include/qt5/QtCore/qlogging.h \ + /usr/include/qt5/QtCore/qflags.h \ + /usr/include/qt5/QtCore/qtypeinfo.h \ + /usr/include/qt5/QtCore/qtypetraits.h \ + /usr/include/qt5/QtCore/qsysinfo.h \ + /usr/include/qt5/QtWidgets/QWidget \ + /usr/include/qt5/QtWidgets/qwidget.h \ + /usr/include/qt5/QtGui/qwindowdefs.h \ + /usr/include/qt5/QtCore/qobjectdefs.h \ + /usr/include/qt5/QtCore/qnamespace.h \ + /usr/include/qt5/QtCore/qobjectdefs_impl.h \ + /usr/include/qt5/QtGui/qwindowdefs_win.h \ + /usr/include/qt5/QtCore/qobject.h \ + /usr/include/qt5/QtCore/qstring.h \ + /usr/include/qt5/QtCore/qchar.h \ + /usr/include/qt5/QtCore/qbytearray.h \ + /usr/include/qt5/QtCore/qrefcount.h \ + /usr/include/qt5/QtCore/qarraydata.h \ + /usr/include/qt5/QtCore/qstringbuilder.h \ + /usr/include/qt5/QtCore/qlist.h \ + /usr/include/qt5/QtCore/qalgorithms.h \ + /usr/include/qt5/QtCore/qiterator.h \ + /usr/include/qt5/QtCore/qcoreevent.h \ + /usr/include/qt5/QtCore/qscopedpointer.h \ + /usr/include/qt5/QtCore/qmetatype.h \ + /usr/include/qt5/QtCore/qvarlengtharray.h \ + /usr/include/qt5/QtCore/qcontainerfwd.h \ + /usr/include/qt5/QtCore/qisenum.h \ + /usr/include/qt5/QtCore/qobject_impl.h \ + /usr/include/qt5/QtCore/qmargins.h \ + /usr/include/qt5/QtCore/qrect.h \ + /usr/include/qt5/QtCore/qsize.h \ + /usr/include/qt5/QtCore/qpoint.h \ + /usr/include/qt5/QtGui/qpaintdevice.h \ + /usr/include/qt5/QtGui/qpalette.h \ + /usr/include/qt5/QtGui/qcolor.h \ + /usr/include/qt5/QtGui/qrgb.h \ + /usr/include/qt5/QtCore/qstringlist.h \ + /usr/include/qt5/QtCore/qdatastream.h \ + /usr/include/qt5/QtCore/qiodevice.h \ + /usr/include/qt5/QtCore/qpair.h \ + /usr/include/qt5/QtCore/qregexp.h \ + /usr/include/qt5/QtCore/qstringmatcher.h \ + /usr/include/qt5/QtGui/qbrush.h \ + /usr/include/qt5/QtCore/qvector.h \ + /usr/include/qt5/QtGui/qmatrix.h \ + /usr/include/qt5/QtGui/qpolygon.h \ + /usr/include/qt5/QtGui/qregion.h \ + /usr/include/qt5/QtCore/qline.h \ + /usr/include/qt5/QtGui/qtransform.h \ + /usr/include/qt5/QtGui/qpainterpath.h \ + /usr/include/qt5/QtGui/qimage.h \ + /usr/include/qt5/QtGui/qpixmap.h \ + /usr/include/qt5/QtCore/qsharedpointer.h \ + /usr/include/qt5/QtCore/qshareddata.h \ + /usr/include/qt5/QtCore/qsharedpointer_impl.h \ + /usr/include/qt5/QtCore/qhash.h \ + /usr/include/qt5/QtGui/qfont.h \ + /usr/include/qt5/QtGui/qfontmetrics.h \ + /usr/include/qt5/QtGui/qfontinfo.h \ + /usr/include/qt5/QtWidgets/qsizepolicy.h \ + /usr/include/qt5/QtGui/qcursor.h \ + /usr/include/qt5/QtGui/qkeysequence.h \ + /usr/include/qt5/QtGui/qevent.h \ + /usr/include/qt5/QtCore/qvariant.h \ + /usr/include/qt5/QtCore/qmap.h \ + /usr/include/qt5/QtCore/qdebug.h \ + /usr/include/qt5/QtCore/qtextstream.h \ + /usr/include/qt5/QtCore/qlocale.h \ + /usr/include/qt5/QtCore/qset.h \ + /usr/include/qt5/QtCore/qcontiguouscache.h \ + /usr/include/qt5/QtCore/qurl.h \ + /usr/include/qt5/QtCore/qurlquery.h \ + /usr/include/qt5/QtCore/qfile.h \ + /usr/include/qt5/QtCore/qfiledevice.h \ + /usr/include/qt5/QtGui/qvector2d.h \ + /usr/include/qt5/QtGui/qtouchdevice.h \ + /usr/include/qt5/QtWidgets/QLabel \ + /usr/include/qt5/QtWidgets/qlabel.h \ + /usr/include/qt5/QtWidgets/qframe.h \ + /usr/include/qt5/QtWidgets/QHBoxLayout \ + /usr/include/qt5/QtWidgets/qboxlayout.h \ + /usr/include/qt5/QtWidgets/qlayout.h \ + /usr/include/qt5/QtWidgets/qlayoutitem.h \ + /usr/include/qt5/QtWidgets/qgridlayout.h \ + /usr/include/qt5/QtWidgets/QVBoxLayout \ + /usr/include/qt5/QtWidgets/QLineEdit \ + /usr/include/qt5/QtWidgets/qlineedit.h \ + /usr/include/qt5/QtGui/qtextcursor.h \ + /usr/include/qt5/QtGui/qtextformat.h \ + /usr/include/qt5/QtGui/qpen.h \ + /usr/include/qt5/QtGui/qtextoption.h \ + /usr/include/qt5/QtGui/QRegExpValidator \ + /usr/include/qt5/QtGui/qvalidator.h \ + /usr/include/qt5/QtCore/qregularexpression.h \ + /usr/include/qt5/lppmon/parameterdump/tcpackettosend.h \ + /usr/include/qt5/QtCore/QObject \ + /usr/include/qt5/lppmon/parameterdump/parameterdump_global.h \ + ../../DEV_PLE/header/TC_types.h \ + ../../DEV_PLE/header/ccsds_types.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o arbitrarytime.o arbitrarytime.cpp + +moc_systemtime.o: moc_systemtime.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_systemtime.o moc_systemtime.cpp + +moc_arbitrarytime.o: moc_arbitrarytime.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_arbitrarytime.o moc_arbitrarytime.cpp + +####### Install + +install_header: first FORCE + @test -d $(INSTALL_ROOT)/usr/include/qt5/lppmon/paulcommon || mkdir -p $(INSTALL_ROOT)/usr/include/qt5/lppmon/paulcommon + -$(INSTALL_FILE) /opt/LPPMON_PLUGINS_PAUL/paulcommon/systemtime.h $(INSTALL_ROOT)/usr/include/qt5/lppmon/paulcommon/ + -$(INSTALL_FILE) /opt/LPPMON_PLUGINS_PAUL/paulcommon/paulcommon_global.h $(INSTALL_ROOT)/usr/include/qt5/lppmon/paulcommon/ + -$(INSTALL_FILE) /opt/LPPMON_PLUGINS_PAUL/paulcommon/arbitrarytime.h $(INSTALL_ROOT)/usr/include/qt5/lppmon/paulcommon/ + +uninstall_header: FORCE + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/include/qt5/lppmon/paulcommon/arbitrarytime.h + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/include/qt5/lppmon/paulcommon/paulcommon_global.h + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/include/qt5/lppmon/paulcommon/systemtime.h + -$(DEL_DIR) $(INSTALL_ROOT)/usr/include/qt5/lppmon/paulcommon/ + + +install_target: first FORCE + @test -d $(INSTALL_ROOT)/usr/lib64 || mkdir -p $(INSTALL_ROOT)/usr/lib64 + -$(INSTALL_PROGRAM) "$(TARGET)" "$(INSTALL_ROOT)/usr/lib64/$(TARGET)" + -$(STRIP) --strip-unneeded "$(INSTALL_ROOT)/usr/lib64/$(TARGET)" + -$(SYMLINK) "$(TARGET)" "$(INSTALL_ROOT)/usr/lib64/$(TARGET0)" + -$(SYMLINK) "$(TARGET)" "$(INSTALL_ROOT)/usr/lib64/$(TARGET1)" + -$(SYMLINK) "$(TARGET)" "$(INSTALL_ROOT)/usr/lib64/$(TARGET2)" + +uninstall_target: FORCE + -$(DEL_FILE) "$(INSTALL_ROOT)/usr/lib64/$(TARGET)" + -$(DEL_FILE) "$(INSTALL_ROOT)/usr/lib64/$(TARGET0)" + -$(DEL_FILE) "$(INSTALL_ROOT)/usr/lib64/$(TARGET1)" + -$(DEL_FILE) "$(INSTALL_ROOT)/usr/lib64/$(TARGET2)" + -$(DEL_DIR) $(INSTALL_ROOT)/usr/lib64/ + + +install: install_header install_target FORCE + +uninstall: uninstall_header uninstall_target FORCE + +FORCE: + diff --git a/rmapplugin/stardundee.cpp b/rmapplugin/stardundee.cpp --- a/rmapplugin/stardundee.cpp +++ b/rmapplugin/stardundee.cpp @@ -152,7 +152,7 @@ bool StarDundee::Open() if (getLinkStatus(linkNumber_SPINBOX->value())) { emit isOpen(true); - timer->start(100); // starts the periodical timer, period = 100ms + timer->start(1); // starts the periodical timer, period = 100ms return true; } else diff --git a/spw_usb_driver_v2.61/inc/rmap_packet_library.h b/spw_usb_driver_v2.61/inc/rmap_packet_library.h deleted file mode 100644 --- a/spw_usb_driver_v2.61/inc/rmap_packet_library.h +++ /dev/null @@ -1,690 +0,0 @@ -/** - * \file rmap_packet_library.h - * \brief Declarations of the functions provided by the STAR-Dundee RMAP Packet - * Library. - * STAR-Dundee\n - * Unit 12, Dundee University Incubator\n - * James Lindsay Place\n - * Dundee Technopole\n - * Dundee, DD1 5JJ\n - * Scotland, UK\n - * e-mail: support@star-dundee.com - * - * This file contains the declarations of the functions provided by the - * STAR-Dundee RMAP Packet Library, along with constants and types used by the - * library. The RMAP Packet Library provides functions for building and - * interpreting RMAP packets. - * - * IMPORTANT NOTE: - * \note If you are experiencing compilation errors indicating that - * U8 is already defined, for example, please add the following - * line to your code prior to including this file:\n - * \#define NO_STAR_TYPES\n - * Alternatively you can compile your code with a flag of - * -DNO_STAR_TYPES.\n - * (Copied from star_dundee_types.h) - * - * \version 3.2 - June 19th 2012\n - * Fixed bug when checking a write command packet or read reply packet - * has a data length of 0. - * Updates to documentation. - * - * \version 3.1 - February 10th 2012\n - * Minor updates to packet types to avoid errors in static - * analysers.\n\n - * - * \version 3.0 - October 14th 2011\n - * Updated linking process on Windows.\n - * Updated library file name.\n\n - * - * \version 2.1 - August 22nd 2011\n - * Made minor improvements to the internal structure.\n\n - * - * \version 2.0 - October 28th 2009\n - * Changed internal architecture to minimise memory allocations.\n - * Restored __stdcall calling convention on Windows.\n - * Updated names to be consistent with terminology in latest RMAP - * standard.\n - * Added functions to calculate the length of different packet types - * and to fill a buffer with specific packets.\n\n - * - * \version 1.9 - July 29th 2009\n - * Fixed problem with byte ordering in return value of - * RMAP_GetAddress.\n - * Fixed bug when creating read and write reply packets, with a packet - * structure provided.\n\n - * - * \version 1.8 - February 26th 2009\n - * Updated the calling convention used in the function declaration to - * __stdcall on Windows.\n\n - * - * \version 1.7 - November 20th 2008\n - * Fixed problem with naming of RMAP_IsCRCValid in header file.\n - * Added function to calculate a CRC starting from a CRC seed - * value.\n\n - * - * \version 1.6 - October 29th 2007\n - * Added support for SpaceCube.\n\n - * - * \version 1.5 - March 23rd 2007\n - * Used star_dundee_types.h to represent integer values of 1, 2 and 4 - * bytes in a cross-platform manner.\n - * Fixed problems encountered on big endian machines.\n\n - * - * \version 1.4 - March 19th 2007\n - * Improved freeing of memory following errors.\n\n - * - * \version 1.3 - November 7th 2006\n - * Updated to be multi-platform.\n - * Using new CRC table.\n - * Fixed error when checking the format of read-modify-write command - * packets, data length incorrect.\n - * Fixed error when identifying the start of the extended and normal - * read/write address.\n - * Fixed error when reading the data length in a read command.\n\n - * - * \version 1.2 - April 3rd 2006\n - * Fixed potential problems with RMAP_PACKET_STATUS enum being an - * undefined size (no change to this file required).\n\n - * - * \version 1.1 - March 9th 2006\n - * Added support for different byte alignment requirements.\n\n - * - * \version 1.0 - December 20th 2005\n - * Initial version.\n\n - * - * Copyright © 2009 STAR-Dundee Ltd - */ - - - -#ifndef RMAP_PACKET_LIBRARY_H -#define RMAP_PACKET_LIBRARY_H - - - -#include "star-dundee_types.h" - - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#if defined(_WIN32) || defined(_WIN64) - #ifdef _WIN64 - #define RMAPPACKETLIBRARY_CC - #else - #define RMAPPACKETLIBRARY_CC __stdcall - #endif -#else - #define RMAPPACKETLIBRARY_CC -#endif - - - -typedef enum -{ - RMAP_SUCCESS = 0x00, - RMAP_GENERAL_ERROR = 0x01, - RMAP_UNUSED_PACKET_TYPE_OR_COMMAND_CODE = 0x02, - RMAP_INVALID_KEY = 0x03, - RMAP_INVALID_DATA_CRC = 0x04, - RMAP_EARLY_EOP = 0x05, - RMAP_TOO_MUCH_DATA = 0x06, - RMAP_EEP = 0x07, - RMAP_VERIFY_BUFFER_OVERRUN = 0x09, - RMAP_COMMAND_NOT_IMPLEMENTED_OR_AUTHORISED = 0x0a, - RMAP_RMW_DATA_LENGTH_ERROR = 0x0b, - RMAP_INVALID_TARGET_LOGICAL_ADDRESS = 0x0c, - RMAP_INVALID_STATUS = 0xff -} RMAP_STATUS; - - - -#define RMAP_PROTOCOL_IDENTIFIER 1 - -#define RMAP_RESERVED_BIT 0x80 -#define RMAP_COMMAND_BIT 0x40 -#define RMAP_WRITE_OPERATION_BIT 0x20 -#define RMAP_VERIFY_BEFORE_WRITE_BIT 0x10 -#define RMAP_REPLY_BIT 0x08 -#define RMAP_INCREMENT_ADDRESS_BIT 0x04 -#define RMAP_REPLY_ADDRESS_LENGTH_BITS 0x03 - - - -typedef enum -{ - RMAP_WRITE_COMMAND = (RMAP_COMMAND_BIT | - RMAP_WRITE_OPERATION_BIT), - RMAP_WRITE_REPLY = (RMAP_WRITE_OPERATION_BIT), - RMAP_READ_COMMAND = (RMAP_COMMAND_BIT), - RMAP_READ_REPLY = (0), - RMAP_READ_MODIFY_WRITE_COMMAND = (RMAP_COMMAND_BIT | - RMAP_VERIFY_BEFORE_WRITE_BIT), - RMAP_READ_MODIFY_WRITE_REPLY = (RMAP_VERIFY_BEFORE_WRITE_BIT), - RMAP_INVALID_PACKET_TYPE = (0xff) -} RMAP_PACKET_TYPE; - - - -typedef struct -{ - RMAP_PACKET_TYPE packetType; - U8 *pTargetAddress; - unsigned long targetAddressLength; - U8 *pReplyAddress; - unsigned long replyAddressLength; - U8 *pProtocolIdentifier; - U8 *pInstruction; - char verifyBeforeWrite; - char acknowledge; - char incrementAddress; - U8 *pKey; - U16 *pTransactionIdentifier; - U32 *pReadWriteAddress; - U8 *pExtendedReadWriteAddress; - U8 *pStatus; - U8 *pHeader; - unsigned long headerLength; - U8 *pHeaderCRC; - U8 *pData; - void *pDataLength; - U32 dataLength; - U8 *pDataCRC; - U8 *pMask; - U8 maskLength; - U8 *pRawPacket; - unsigned long rawPacketLength; -} RMAP_PACKET; - - - -/* Declarations of the functions provided by the RMAP Packet Library */ - -U32 -RMAPPACKETLIBRARY_CC -RMAP_GetVersion( - void - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_CalculateCRC( - void *pBuffer, - unsigned long len - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_CalculateCRCWithSeed( - void *pBuffer, - unsigned long len, - U8 crc - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_IsCRCValid( - void *pBuffer, - unsigned long len, - U8 crc - ); - -RMAP_STATUS -RMAPPACKETLIBRARY_CC -RMAP_CheckPacketValid( - void *pRawPacket, - unsigned long packetLength, - RMAP_PACKET *pPacketStruct, - char checkPacketTooLong - ); - -RMAP_PACKET_TYPE -RMAPPACKETLIBRARY_CC -RMAP_GetPacketType( - RMAP_PACKET *pPacketStruct - ); - -U8 * -RMAPPACKETLIBRARY_CC -RMAP_GetTargetAddress( - RMAP_PACKET *pPacketStruct, - unsigned long *pTargetAddressLength - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_GetVerifyBeforeWrite( - RMAP_PACKET *pPacketStruct - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_GetPerformAcknowledgement( - RMAP_PACKET *pPacketStruct - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_GetIncrementAddress( - RMAP_PACKET *pPacketStruct - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_GetKey( - RMAP_PACKET *pPacketStruct - ); - -U8 * -RMAPPACKETLIBRARY_CC -RMAP_GetReplyAddress( - RMAP_PACKET *pPacketStruct, - unsigned long *pReplyAddressLength - ); - -U16 -RMAPPACKETLIBRARY_CC -RMAP_GetTransactionID( - RMAP_PACKET *pPacketStruct - ); - -U32 -RMAPPACKETLIBRARY_CC -RMAP_GetAddress( - RMAP_PACKET *pPacketStruct, - U8 *pExtendedAddress - ); - -U8 * -RMAPPACKETLIBRARY_CC -RMAP_GetData( - RMAP_PACKET *pPacketStruct, - U32 *pDataLength - ); - -U32 -RMAPPACKETLIBRARY_CC -RMAP_GetReadLength( - RMAP_PACKET* pPacketStruct - ); - -RMAP_STATUS -RMAPPACKETLIBRARY_CC -RMAP_GetStatus( - RMAP_PACKET *pPacketStruct - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_GetHeaderCRC( - RMAP_PACKET *pPacketStruct - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_GetDataCRC( - RMAP_PACKET *pPacketStruct - ); - -U8 * -RMAPPACKETLIBRARY_CC -RMAP_GetMask( - RMAP_PACKET *pPacketStruct, - U8 *pMaskLength - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateWriteCommandPacketLength( - unsigned long targetAddressLength, - unsigned long replyAddressLength, - U32 dataLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillWriteCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char verifyBeforeWrite, - char acknowledge, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 writeAddress, - U8 extendedWriteAddress, - U8 *pData, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildWriteCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char verifyBeforeWrite, - char acknowledge, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 writeAddress, - U8 extendedWriteAddress, - U8 *pData, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildWriteRegisterPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char verifyBeforeWrite, - char acknowledge, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 writeAddress, - U8 extendedWriteAddress, - U32 registerValue, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateWriteReplyPacketLength( - unsigned long initiatorAddressLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillWriteReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - char verifyBeforeWrite, - char incrementAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildWriteReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - char verifyBeforeWrite, - char incrementAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateReadCommandPacketLength( - unsigned long targetAddressLength, - unsigned long replyAddressLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillReadCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 readAddress, - U8 extendedReadAddress, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 readAddress, - U8 extendedReadAddress, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadRegisterPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 readAddress, - U8 extendedReadAddress, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateReadReplyPacketLength( - unsigned long initiatorAddressLength, - U32 dataLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillReadReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - char incrementAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - U8 *pData, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - char incrementAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - U8 *pData, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateReadModifyWriteCommandPacketLength( - unsigned long targetAddressLength, - unsigned long replyAddressLength, - U32 dataAndMaskLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillReadModifyWriteCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - U8 key, - U16 transactionIdentifier, - U32 readModifyWriteAddress, - U8 extendedReadModifyWriteAddress, - U8 dataAndMaskLength, - U8 *pData, - U8 *pMask, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadModifyWriteCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - U8 key, - U16 transactionIdentifier, - U32 readModifyWriteAddress, - U8 extendedReadModifyWriteAddress, - U8 dataAndMaskLength, - U8 *pData, - U8 *mask, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadModifyWriteRegisterPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - U8 key, - U16 transactionIdentifier, - U32 readModifyWriteAddress, - U8 extendedReadModifyWriteAddress, - U32 registerValue, - U32 mask, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateReadModifyWriteReplyPacketLength( - unsigned long initiatorAddressLength, - U32 dataLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillReadModifyWriteReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - unsigned long dataLength, - U8 *pData, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadModifyWriteReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - unsigned long dataLength, - U8 *pData, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -void -RMAPPACKETLIBRARY_CC -RMAP_FreeBuffer( - void *pBuffer - ); - - -/* Macros for accessing the version */ - -#define RMAP_GET_VERSION_MAJOR(versionInfo) (((version) & 0xff000000) >> 24) -#define RMAP_GET_VERSION_MINOR(versionInfo) (((version) & 0x00ff0000) >> 16) -#define RMAP_GET_VERSION_EDIT(versionInfo) (((version) & 0x0000ffc0) >> 6) -#define RMAP_GET_VERSION_PATCH(versionInfo) ((version) & 0x0000003f) - - - -#ifdef __cplusplus -} -#endif - - - -#endif /* RMAP_PACKET_LIBRARY_H */ - - - diff --git a/spw_usb_driver_v2.61/inc/spacewire_usb.h b/spw_usb_driver_v2.61/inc/spacewire_usb.h deleted file mode 100755 --- a/spw_usb_driver_v2.61/inc/spacewire_usb.h +++ /dev/null @@ -1,205 +0,0 @@ -/******************************************************************************/ -/* */ -/* spacewire_usb.h */ -/* */ -/* Header file for all constants which may be used with the STAR-Dundee */ -/* SpaceWire USB driver. */ -/* */ -/* Version 2.61, September 17th 2012 */ -/* */ -/* Version 2.61, 17/09/12 */ -/* ====================== */ -/* Added support for STAR Fire and WBS II. */ -/* */ -/* Version 2.60, 04/01/12 */ -/* ====================== */ -/* Added support for EGSE and SPLT. */ -/* */ -/* Version 2.59, 15/08/11 */ -/* ====================== */ -/* Added support for RTC. */ -/* */ -/* Version 2.58, 12/10/10 */ -/* ===================== */ -/* Added support for Link Analyser Mk2. */ -/* */ -/* Version 2.51 */ -/* ============ */ -/* Added use of star_dundee_types.h. */ -/* */ -/* Version 2.5 */ -/* =========== */ -/* Initial version, following change to new architecture. */ -/* */ -/* Copyright (2012), STAR-Dundee Ltd., */ -/* STAR House, */ -/* 166 Nethergate, */ -/* Dundee, DD1 4EE, */ -/* Scotland, UK. */ -/* e-mail: support@star-dundee.com */ -/* */ -/******************************************************************************/ - - - -#ifndef SPACEWIRE_USB_H -#define SPACEWIRE_USB_H - - - -#ifdef __cplusplus -extern "C" { -#endif - - -/* The types used by the API */ -#include "star_dundee_types.h" - - -/* End of packet marker types */ -#define SPACEWIRE_USB_EOP_CHAR ((U8)0x80) -#define SPACEWIRE_USB_EEP_CHAR ((U8)0x40) - -/* The protocol byte used to identify LODI packets */ -#define SPACEWIRE_USB_LODI_PROTOCOL (0xd1) - - - -/* Possible results of read and send operations */ -typedef enum -{ - TRANSFER_NOT_STARTED = 0, - TRANSFER_STARTED = 1, - TRANSFER_SUCCESS = 2, - TRANSFER_ERROR_DISCONNECT = 3, - TRANSFER_ERROR_PARITY = 4, - TRANSFER_ERROR_UNKNOWN = 5, - TRANSFER_ERROR_TIMEOUT = 6, - TRANSFER_ERROR_LINK_NOT_STARTED = 7, - TRANSFER_ERROR_USER_BUFFER_LOCK_FAILED = 8, - TRANSFER_ERROR_LINK_ALREADY_IN_USE = 9, - TRANSFER_ERROR_RECEIVE_BUFFER_FULL = 0xa, - TRANSFER_ERROR_OUT_OF_MEMORY = 0xb, - TRANSFER_ERROR_NOT_FOUND = 0xc, - TRANSFER_ERROR_USB_ERROR = 0xd, - TRANSFER_ERROR_NOT_REGISTERED_TO_RECEIVE = 0xe -} USB_SPACEWIRE_STATUS, *PUSB_SPACEWIRE_STATUS; - - - -/* Possible traffic types */ -typedef enum -{ - SPACEWIRE_TRAFFIC_UNKNOWN = -1, - SPACEWIRE_TRAFFIC_PACKET = 0, - SPACEWIRE_TRAFFIC_TIMECODE = 1, - SPACEWIRE_TRAFFIC_CONTROL = 2 -} SPACEWIRE_TRAFFIC_TYPE, *PSPACEWIRE_TRAFFIC_TYPE; - - - -/* The different end of packet marker types */ -typedef enum -{ - SPACEWIRE_USB_NO_EOP = 0, - SPACEWIRE_USB_EOP = SPACEWIRE_USB_EOP_CHAR, - SPACEWIRE_USB_EEP = SPACEWIRE_USB_EEP_CHAR -} USB_SPACEWIRE_EOP_TYPE, *PUSB_SPACEWIRE_EOP_TYPE; - - - -/* Possible device types */ -typedef enum -{ - SPACEWIRE_DEVICE_UNKNOWN = -1, - SPACEWIRE_ROUTER_USB = 0, - SPACEWIRE_BRICK = 1, - SPACEWIRE_LINK_ANALYSER = 2, - SPACEWIRE_CONFORMANCE_TESTER = 3, - SPACEWIRE_TUNNEL_BRICK = 4, - SPACEWIRE_LINK_ANALYSER_MK2 = 5, - SPACEWIRE_RTC = 6, - SPACEWIRE_EGSE = 7, - SPACEWIRE_PHYSICAL_LAYER_TESTER = 8, - STAR_FIRE = 9, - WBS_II = 10 -} SPACEWIRE_DEVICE_TYPE, *PSPACEWIRE_DEVICE_TYPE; - - - - -/* Structure used to store packet lengths and EOPs for a read request */ -typedef struct -{ - unsigned long len; - USB_SPACEWIRE_EOP_TYPE eop; - SPACEWIRE_TRAFFIC_TYPE type; -} USB_SPACEWIRE_PACKET_PROPERTIES, *PUSB_SPACEWIRE_PACKET_PROPERTIES; - - - -/* The type of all send and receive identifiers */ -typedef void * USB_SPACEWIRE_ID; - - - -/* Structure used to represent the firmware version of a device */ -typedef struct -{ - U8 major; - U8 minor; - U16 edit; - U8 patch; -} SPACEWIRE_FIRMWARE_VERSION; - - -/* The product ID used by each STAR-Dundee SpaceWire device */ - -/** The product ID used by a device with no EEPROM */ -#define SPACEWIRE_PRODUCT_ID_NO_EEPROM (0x8613) -/** The product ID used by an old device in the power check state */ -#define SPACEWIRE_PRODUCT_ID_POWER_CHECK (0x461f) -/** The product ID used by an old device with no ID set */ -#define SPACEWIRE_PRODUCT_ID_NO_ID (0x1002) -/** The product ID used by the SpaceWire Router-USB */ -#define SPACEWIRE_PRODUCT_ID_ROUTER_USB (0x1011) -/** The product ID used by the SpaceWire-USB Brick */ -#define SPACEWIRE_PRODUCT_ID_BRICK (0x1012) -/** The product ID used by the SpaceWire Link Analyser */ -#define SPACEWIRE_PRODUCT_ID_LINK_ANALYSER (0x1013) -/** The product ID used by the SpaceWire Conformance Tester */ -#define SPACEWIRE_PRODUCT_ID_CONFORMANCE_TESTER (0x1014) -/** The product ID used by the SpaceWire-IP Tunnel */ -#define SPACEWIRE_PRODUCT_ID_TUNNEL_BRICK (0x1015) -/** The product ID used by the SpaceWire Router-USB with multiple channels */ -#define SPACEWIRE_PRODUCT_ID_ROUTER_MULTIPLE_CHANNELS (0x1016) -/** The product ID used by the SpaceWire Router-USB II Rev 4 */ -#define SPACEWIRE_PRODUCT_ID_ROUTER_USB_II_REV4 (0x1017) -/** The product ID used by the SpaceWire Link Analyser Mk2 */ -#define SPACEWIRE_PRODUCT_ID_LINK_ANALYSER_MK2 (0x1018) -/** The product ID used by the SpaceWire RTC */ -#define SPACEWIRE_PRODUCT_ID_RTC (0x1019) -/** The product ID used by the SpaceWire EGSE */ -#define SPACEWIRE_PRODUCT_ID_EGSE (0x101a) -/** The product ID used by the SpaceWire SPLT */ -#define SPACEWIRE_PRODUCT_ID_SPLT (0x101b) -/** The product ID used by the STAR Fire device */ -#define SPACEWIRE_PRODUCT_ID_STAR_FIRE (0x101c) -/** The product ID used by the WBS II device */ -#define SPACEWIRE_PRODUCT_ID_WBS_II (0x101d) -/** A product ID to be used by a future device */ -#define SPACEWIRE_PRODUCT_ID_FUTURE_101E (0x101e) -/** A product ID to be used by a future device */ -#define SPACEWIRE_PRODUCT_ID_FUTURE_101F (0x101f) - - -#ifdef __cplusplus -} -#endif - - - -#endif /* SPACEWIRE_USB_H */ - - - diff --git a/spw_usb_driver_v2.61/inc/spw_config_library.h b/spw_usb_driver_v2.61/inc/spw_config_library.h deleted file mode 100755 --- a/spw_usb_driver_v2.61/inc/spw_config_library.h +++ /dev/null @@ -1,656 +0,0 @@ -/******************************************************************************/ -/* */ -/* spw_config_library.h */ -/* */ -/* Declaration of the functions, and definition of macros provided by the */ -/* SpaceWire Router Configuration Library for the SpaceWire USB and */ -/* SpaceWire PCI drivers. */ -/* */ -/* Version 2.60 - January 5th 2012 */ -/* */ -/* Version 2.60 - 05/04/12 */ -/* ======================= */ -/* Updated declarations to replace CFGSpaceWire_EnableReadOnAllPorts */ -/* with CFGSpaceWire_EnableReceiveOnAllPorts and */ -/* CFGSpaceWire_IsReadingOnAllPortsEnabled with */ -/* CFGSpaceWire_IsReceiveOnAllPortsEnabled. */ -/* */ -/* Version 2.54 - 10/12/10 */ -/* ======================= */ -/* Replaced CFGSpaceWire_RTOutputPorts with */ -/* CFGSpaceWire_RTGetOutputPorts, which doesn't unnecessarily shift the */ -/* output port bits and is consistent with */ -/* CFGSpaceWire_RTBuildRoutingTableEntry. */ -/* */ -/* Version 2.53 - 26/02/09 */ -/* ======================= */ -/* Updated the calling convention used in the function declarations to */ -/* __stdcall on Windows. */ -/* */ -/* Version 2.52, 04/11/08 */ -/* ====================== */ -/* Added support for precision transmit rate on new Router-USB. */ -/* Added chip ID values. */ -/* */ -/* Version 2.51, 21/10/08 */ -/* ====================== */ -/* Updated to support Windows. */ -/* */ -/* Version 2.50, 08/11/06 */ -/* ====================== */ -/* Initial version, following change to new structure. */ -/* */ -/* Copyright (c) 2012, Stuart Mills, */ -/* STAR-Dundee, */ -/* c/o School of Computing, */ -/* University of Dundee, */ -/* Dundee, DD1 4HN, */ -/* Scotland, UK. */ -/* http://www.star-dundee.com */ -/* e-mail: support@star-dundee.com */ -/* */ -/******************************************************************************/ - - - -#ifndef SPACEWIRE_ROUTER_LIBRARY -#define SPACEWIRE_ROUTER_LIBRARY - - -#include "star_dundee_types.h" - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#if defined(_WIN32) || defined(_WIN64) - - -/* Windows specifc functions and macros */ - -#ifdef ROUTERCONFIGURATIONLIBRARY_EXPORTS -#define ROUTER_CONFIG_LIBRARY __declspec(dllexport) -#else -#define ROUTER_CONFIG_LIBRARY __declspec(dllimport) -#endif - -/* The calling convention to be used */ -#ifdef _WIN64 -#define ROUTER_CONFIG_CC -#else -#define ROUTER_CONFIG_CC __stdcall -#endif /* WIN64 */ - - -#include "windows.h" - - -#else /* _WIN32 */ - - -/* Linux specific functions and macros */ - -#define ROUTER_CONFIG_LIBRARY -#define ROUTER_CONFIG_CC - - -#endif /* _WIN32 */ - - - -/* Possible bit values */ -#define BIT0 (0x00000001) -#define BIT1 (0x00000002) -#define BIT2 (0x00000004) -#define BIT3 (0x00000008) -#define BIT4 (0x00000010) -#define BIT5 (0x00000020) -#define BIT6 (0x00000040) -#define BIT7 (0x00000080) -#define BIT8 (0x00000100) -#define BIT9 (0x00000200) -#define BIT10 (0x00000400) -#define BIT11 (0x00000800) -#define BIT12 (0x00001000) -#define BIT13 (0x00002000) -#define BIT14 (0x00004000) -#define BIT15 (0x00008000) -#define BIT16 (0x00010000) -#define BIT17 (0x00020000) -#define BIT18 (0x00040000) -#define BIT19 (0x00080000) -#define BIT20 (0x00100000) -#define BIT21 (0x00200000) -#define BIT22 (0x00400000) -#define BIT23 (0x00800000) -#define BIT24 (0x01000000) -#define BIT25 (0x02000000) -#define BIT26 (0x04000000) -#define BIT27 (0x08000000) -#define BIT28 (0x10000000) -#define BIT29 (0x20000000) -#define BIT30 (0x40000000) -#define BIT31 (0x80000000) - - - -/* Exported enums and structs */ - - - -/* Read write address errors */ -typedef enum -{ - CFG_TRANSFER_SUCCESS = 0x00, - CFG_TRANSMIT_PACKET_FAILURE = 0x01, - CFG_REPLY_PACKET_FAILURE = 0x02, - CFG_REPLY_PACKET_TOO_BIG = 0x03, - CFG_REPLY_PACKET_TOO_SMALL = 0x04, - CFG_REPLY_PACKET_NAK = 0x05, - CFG_REPLY_PACKET_CHECKSUM_ERROR = 0x06, -} CFG_SPACEWIRE_STATUS; - - - -/* Length of port timeout */ -typedef enum -{ - CFG_PORT_TIMEOUT_100US = 0x0, - CFG_PORT_TIMEOUT_1MS = 0x1, - CFG_PORT_TIMEOUT_10MS = 0x2, - CFG_PORT_TIMEOUT_100MS = 0x3, - CFG_PORT_TIMEOUT_1S = 0x4, -} CFG_SPACEWIRE_PORT_TIMEOUT; - - - -/* SpaceWire Port errors */ -#define CFG_SPACEWIRE_NO_ERRORS (0) -#define CFG_SPACEWIRE_ERROR_ACTIVE (BIT0) -#define CFG_SPACEWIRE_PACKET_ADDRESS_ERROR (BIT1) -#define CFG_SPACEWIRE_PORT_TIMEOUT_ERROR (BIT2) -#define CFG_SPACEWIRE_DISCONNECT_ERROR (BIT3) -#define CFG_SPACEWIRE_PARITY_ERROR (BIT4) -#define CFG_SPACEWIRE_ESCAPE_ERROR (BIT5) -#define CFG_SPACEWIRE_CREDIT_ERROR (BIT6) -#define CFG_SPACEWIRE_CHARACTER_SEQUENCE_ERROR (BIT7) -#define CFG_SPACEWIRE_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | \ - BIT4 | BIT5 | BIT6 | BIT7) - -/* Config Port errors */ -#define CFG_CONFIG_NO_ERRORS (0) -#define CFG_CONFIG_ERROR_ACTIVE (BIT0) - -/* Config Port errors (non-RMAP) */ -#define CFG_CONFIG_PACKET_ADDRESS_ERROR (BIT1) -#define CFG_CONFIG_PORT_TIMEOUT_ERROR (BIT2) -#define CFG_CONFIG_CHECKSUM_ERROR (BIT3) -#define CFG_CONFIG_TOO_SHORT_ERROR (BIT4) -#define CFG_CONFIG_TOO_LONG_ERROR (BIT5) -#define CFG_CONFIG_PACKET_EEP_ERROR (BIT6) -#define CFG_CONFIG_PROTOCOL_BYTE_ERROR (BIT7) -#define CFG_CONFIG_INVALID_REGISTER_ERROR (BIT8) -#define CFG_CONFIG_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | \ - BIT4 | BIT5 | BIT6 | BIT7 | \ - BIT8) - -/* Config Port errors (RMAP) */ -#define CFG_CONFIG_RMAP_PORT_TIMEOUT_ERROR (BIT1) -#define CFG_CONFIG_RMAP_INVALID_HEADER_CRC (BIT2) -#define CFG_CONFIG_RMAP_INVALID_DATA_CRC (BIT3) -#define CFG_CONFIG_RMAP_INVALID_DESTINATION_KEY (BIT4) -#define CFG_CONFIG_RMAP_COMMAND_NOT_IMPLEMENTED (BIT5) -#define CFG_CONFIG_RMAP_INVALID_DATA_LENGTH (BIT6) -#define CFG_CONFIG_RMAP_INVALID_RMW_DATA_LENGTH (BIT7) -#define CFG_CONFIG_RMAP_INVALID_DESTINATION_ADDRESS (BIT8) -#define CFG_CONFIG_RMAP_EARLY_EOP (BIT9) -#define CFG_CONFIG_RMAP_LATE_EOP (BIT10) -#define CFG_CONFIG_RMAP_EARLY_EEP (BIT11) -#define CFG_CONFIG_RMAP_LATE_EEP (BIT12) -#define CFG_CONFIG_RMAP_VERIFY_BUFFER_OVERRUN_ERROR (BIT13) -#define CFG_CONFIG_RMAP_INVALID_REGISTER_ADDRESS (BIT14) -#define CFG_CONFIG_RMAP_UNSUPPORTED_PROTOCOL_ERROR (BIT15) -#define CFG_CONFIG_RMAP_SOURCE_LOGICAL_ADDRESS_ERROR (BIT16) -#define CFG_CONFIG_RMAP_SOURCE_PATH_ADDRESS_ERROR (BIT17) -#define CFG_CONFIG_RMAP_CARGO_TOO_LARGE (BIT18) -#define CFG_CONFIG_RMAP_UNUSED_COMMAND_OR_PACKET_TYPE (BIT19) -#define CFG_CONFIG_RMAP_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | \ - BIT5 | BIT6 | BIT7 | BIT8 | BIT9 | \ - BIT10 | BIT11 | BIT12 | BIT13 | \ - BIT14 | BIT15 | BIT16 | BIT17 | \ - BIT18 | BIT19) - -/* External Port errors */ -#define CFG_EXTERNAL_NO_ERRORS (0) -#define CFG_EXTERNAL_ERROR_ACTIVE (BIT0) -#define CFG_EXTERNAL_PACKET_ADDRESS_ERROR (BIT1) -#define CFG_EXTERNAL_PORT_TIMEOUT_ERROR (BIT2) -#define CFG_EXTERNAL_INPUT_BUFFER_EMPTY_ERROR (BIT3) -#define CFG_EXTERNAL_INPUT_BUFFER_FULL_ERROR (BIT4) -#define CFG_EXTERNAL_OUTPUT_BUFFER_EMPTY_ERROR (BIT5) -#define CFG_EXTERNAL_OUTPUT_BUFFER_FULL_ERROR (BIT6) -#define CFG_EXTERNAL_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | \ - BIT4 | BIT5 | BIT6) - -/* SpaceWire Port interface state */ -#define CFG_SPACEWIRE_ERROR_RESET (0) -#define CFG_SPACEWIRE_ERROR_WAIT (BIT0) -#define CFG_SPACEWIRE_READY (BIT1) -#define CFG_SPACEWIRE_STARTED (BIT1 | BIT0) -#define CFG_SPACEWIRE_CONNECTING (BIT2) -#define CFG_SPACEWIRE_RUN (BIT2 | BIT0) - -/* Port type */ -#define CFG_CONFIGURATION_PORT (0) -#define CFG_SPACEWIRE_SERIAL_PORT (BIT0) -#define CFG_SPACEWIRE_EXTERNAL_PORT (BIT1) - -/* SpaceWire Port control bits */ -#define CFG_SPACEWIRE_INTERFACE_STATE_START (8) -#define CFG_SPACEWIRE_INTERFACE_STATE (BIT8 | BIT9 | BIT10) -#define CFG_SPACEWIRE_RUNNING (BIT11) -#define CFG_SPACEWIRE_AUTOSTART (BIT12) -#define CFG_SPACEWIRE_START (BIT13) -#define CFG_SPACEWIRE_DISABLE (BIT14) -#define CFG_SPACEWIRE_TRISTATE (BIT15) -#define CFG_SPACEWIRE_RATE (BIT16 | BIT17 | BIT18 | \ - BIT19 | BIT20 | BIT21 | BIT22) -#define CFG_SPACEWIRE_RATE_START (16) - -/* Bits in the GAR Table */ -#define CFG_GAR_OUTPUT_PORTS_START (1) -#define CFG_GAR_OUTPUT_PORTS (BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | \ - BIT6 | BIT7 | BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | BIT13 | BIT14 | \ - BIT15 | BIT16 | BIT17 | BIT18 | BIT19 | BIT20 | BIT21 | BIT22 | \ - BIT23 | BIT24 | BIT25 | BIT26 | BIT27 | BIT28) -#define CFG_GAR_DEL_HEAD (BIT29) -#define CFG_GAR_PRIORITY (BIT30) -#define CFG_GAR_INVALID_ADDR (BIT31) - -/* Bits in the router control register */ -#define CFG_RC_TIMEOUT_ENABLE_START (0) -#define CFG_RC_TIMEOUT_ENABLE (BIT0) -#define CFG_RC_TIMEOUT_VALUE_START (1) -#define CFG_RC_TIMEOUT_VALUE (BIT1 | BIT2 | BIT3) -#define CFG_RC_DISABLE_ON_SILENCE (BIT4) -#define CFG_RC_DISABLE_ON_SILENCE_START (4) -#define CFG_RC_START_ON_REQUEST (BIT5) -#define CFG_RC_START_ON_REQUEST_START (5) -#define CFG_RC_SELF_ADDRESSING (BIT6) -#define CFG_RC_SELF_ADDRESSING_START (6) -#define CFG_RC_INTERFACE (BIT7) -#define CFG_RC_INTERFACE_START (7) -#define CFG_RC_INTERFACE_IDENT (BIT8) -#define CFG_RC_INTERFACE_IDENT_START (8) - -/* The bits shared by all ports */ -#define CFG_PORT_CONNECTION (BIT24 | BIT25 | BIT26 | BIT27 | BIT28) -#define CFG_PORT_CONNECTION_START (24) -#define CFG_PORT_TYPE (BIT29 | BIT30 | BIT31) -#define CFG_PORT_TYPE_START (29) - -/* Network discovery register values */ -#define CFG_NETD_TYPE (BIT0 | BIT1 | BIT2 | BIT3) -#define CFG_NETD_TYPE_START (0) -#define CFG_NETD_RETURN_PORT (BIT4 | BIT5 | BIT6 | BIT7) -#define CFG_NETD_RETURN_PORT_START (4) -#define CFG_NETD_RUNNING_PORTS (BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | \ - BIT13 | BIT14 | BIT15 | BIT16 | BIT17 | BIT18 | BIT19 | BIT20 | \ - BIT21 | BIT22 | BIT23 | BIT24 | BIT25 | BIT26 | BIT27 | BIT28 | \ - BIT29 | BIT30 | BIT31) -#define CFG_NETD_RUNNING_PORTS_START (8) - -/* Values in the ID register */ -#define CFG_ID_VERSION (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | \ - BIT5 | BIT6 | BIT7) -#define CFG_ID_VERSION_START (0) -#define CFG_ID_CHIP (BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | \ - BIT13 | BIT14 | BIT15) -#define CFG_ID_CHIP_START (8) -#define CFG_ID_MANUFACTURER (BIT16 | BIT17 | BIT18 | BIT19 | \ - BIT20 | BIT21 | BIT22 | BIT23) -#define CFG_ID_MANUFACTURER_START (16) - -/* Values in the Time-Code register */ -#define CFG_TC_VALUE (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | \ - BIT5) -#define CFG_TC_VALUE_START (0) -#define CFG_TC_FLAGS (BIT6 | BIT7) -#define CFG_TC_FLAGS_START (6) - -/* Values for the Router Base Clock Select */ -#define CFG_RTR_CLK_100_MBITS (0) -#define CFG_RTR_CLK_200_MBITS (BIT0) - -/* Values for the Brick Base Clock */ -#define CFG_BRK_CLK_100_MHZ (0) -#define CFG_BRK_CLK_120_MHZ (BIT0) -#define CFG_BRK_CLK_140_MHZ (BIT1) -#define CFG_BRK_CLK_160_MHZ (BIT0 | BIT1) -#define CFG_BRK_CLK_180_MHZ (BIT2) -#define CFG_BRK_CLK_200_MHZ (BIT2 | BIT0) - -/* Values for the Brick Base Divider */ -#define CFG_BRK_DVDR_1 (0) -#define CFG_BRK_DVDR_2 (BIT0) -#define CFG_BRK_DVDR_4 (BIT1) - -/* Values in the Tx register */ -#define CFG_TX_BRICK_2MBITS (BIT27) -#define CFG_TX_BRICK_2MBITS_START (27) - -/* Values in the Precision Transmit Rate register */ -#define CFG_PT_ENABLE (BIT16) -#define CFG_PT_ENABLE_START (16) -#define CFG_PT_READY (BIT17) -#define CFG_PT_READY_START (17) -#define CFG_PT_IN_USE (BIT20) -#define CFG_PT_IN_USE_START (20) -#define CFG_PT_RATE_BITS (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | \ - BIT7 | BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | \ - BIT13 | BIT14 | BIT15 ) -#define CFG_PT_DIVIDER_CONSTANT ((double)(pow((double)2, (double)48) / (double)600)) - -/* Chip ID values */ -#define CFG_CID_ROUTER_ASIC (0) /* SpaceWire Router ASIC and IP */ -#define CFG_CID_ROUTER_USB (1) /* Original SpaceWire Router-USB */ -#define CFG_CID_USB_BRICK (2) /* SpaceWire-USB Brick */ -#define CFG_CID_FEIC (4) /* The FEIC chip */ -#define CFG_CID_ROUTER_USB_2 (5) /* New SpaceWire Router-USB */ -#define CFG_CID_PCI_MK2 (7) /* SpaceWire PCI Mk2 */ -#define CFG_CID_PCI_EXPRESS (8) /* SpaceWire PCI Express */ -#define CFG_CID_RTC (9) /* RTC Development Unit */ -#define CFG_CID_CONFORMANCE_TESTER (10) /* SpaceWire Conformance Tester */ -#define CFG_CID_EGSE (11) /* SpaceWire EGSE */ -#define CFG_CID_STAR_FIRE (12) /* STAR Fire */ -#define CFG_CID_WBS_MK2 (14) /* WBS Mk2 */ - - -/* Addresses which can be read from and written to */ -#define CFG_EXTENDED_ADDRESS (0x100) -#define CFG_ADDR_NET_DISC (CFG_EXTENDED_ADDRESS + 0) -#define CFG_ADDR_NET_DISC_IDENT (CFG_EXTENDED_ADDRESS + 1) -#define CFG_ADDR_ROUTER_CONTROL (CFG_EXTENDED_ADDRESS + 2) -#define CFG_ADDR_ERRORS (CFG_EXTENDED_ADDRESS + 3) -#define CFG_ADDR_TIMECODE (CFG_EXTENDED_ADDRESS + 4) -#define CFG_ADDR_IDS (CFG_EXTENDED_ADDRESS + 5) -#define CFG_ADDR_GP (CFG_EXTENDED_ADDRESS + 6) -#define CFG_ADDR_TICK (CFG_EXTENDED_ADDRESS + 7) -#define CFG_ADDR_TX_RATE (CFG_EXTENDED_ADDRESS + 8) -#define CFG_ADDR_PRECISION_1 (CFG_EXTENDED_ADDRESS + 0xC) -#define CFG_ADDR_PRECISION_2 (CFG_EXTENDED_ADDRESS + 0xD) - - -/* Exported functions */ - -/* Version information */ -ROUTER_CONFIG_LIBRARY double ROUTER_CONFIG_CC CFGSpaceWire_GetAPIVersion(void); - -/* Configuration address stack manipulation functions */ -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_StackClear(void); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_AddrStackPush( - U8 dwAddress); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_AddrStackPop(void); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RetAddrStackPush( - U8 dwAddress); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_RetAddrStackPop(void); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_SetProtocolByte( - U8 ProtocolByte); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_GetProtocolByte(void); - -/* RMAP functions */ -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_EnableRMAP( - char useRMAP); -ROUTER_CONFIG_LIBRARY char ROUTER_CONFIG_CC CFGSpaceWire_IsRMAPEnabled(); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_SetRMAPDestinationKey( - U8 destinationKey); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_GetRMAPDestinationKey(); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_SetRMAPAlignment( - U8 alignment); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_GetRMAPAlignment(); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_EnableReceiveOnAllPorts(char enable); -ROUTER_CONFIG_LIBRARY char ROUTER_CONFIG_CC - CFGSpaceWire_IsReceiveOnAllPortsEnabled(); - -/* Ignoring replies to write commands functions */ -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_IgnoreWriteReplies( - char ignore); -ROUTER_CONFIG_LIBRARY char ROUTER_CONFIG_CC - CFGSpaceWire_AreWriteRepliesIgnored(); - -/* Configuration address read and write functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_ReadAddress( - star_device_handle hDevice, U32 dwAddress, U32 *dwData); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_WriteAddress( - star_device_handle hDevice, U32 dwAddress, U32 dwData); - -/* Router link functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_StartLink( - star_device_handle hDevice, U32 dwLinkNum); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_StopLink( - star_device_handle hDevice, U32 dwLinkNum); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_TriStateLink( - star_device_handle hDevice, U32 dwLinkNum, char bEnabled); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetLinkSpeed( - star_device_handle hDevice, U32 dwLinkNum, U32 dwSpeed); - -/* Routing table functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetRoutingTableEntry( - star_device_handle hDevice, U32 nLogicalAddress, U32 *dwRoutingTableEntry); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetRoutingTableEntry( - star_device_handle hDevice, U32 nLogicalAddress, U32 dwRoutingTableEntry); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_ClearRoutingTableEntry( - star_device_handle hDevice, U32 nLogicalAddress); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTIsEnabled( - U32 dwRoutingTableEntry, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTIsDelHead( - U32 dwRoutingTableEntry, char *bDelHead); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTIsPriority( - U32 dwRoutingTableEntry, char *bPriority); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTOutputPorts( - U32 dwRoutingTableEntry, U32 *dwOutputPorts); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTGetOutputPorts( - U32 dwRoutingTableEntry, U32 *dwOutputPorts); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_RTBuildRoutingTableEntry(U32 *dwRoutingTableEntry, - U32 dwOutputPorts, char bDelHead, char bPriority); - -/* Link status control functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetLinkStatusControl( - star_device_handle hDevice, U32 dwLinkNum, U32 *dwStatusControl); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetLinkStatusControl( - star_device_handle hDevice, U32 dwLinkNum, U32 dwStatusControl); - -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSErrorStatus( - U32 dwStatusControl, U32 *dwErrorStatus); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSConfigErrorStatus( - U32 dwStatusControl, U32 *dwErrorStatus); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSExternalErrorStatus( - U32 dwStatusControl, U32 *dwErrorStatus); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSLinkState( - U32 dwStatusControl, U32 *dwLinkStatus); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsLinkRunning( - U32 dwStatusControl, char *isLinkRunning); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsAutoStart( - U32 dwStatusControl, char *isAutoStart); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSEnableAutoStart( - U32 *dwStatusControl, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsStart( - U32 dwStatusControl, char *isStart); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSEnableStart( - U32 *dwStatusControl, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsDisabled( - U32 dwStatusControl, char *isDisabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSEnableDisabled( - U32 *dwStatusControl, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsTristate( - U32 dwStatusControl, char *isTristate); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSEnableTristate( - U32 *dwStatusControl, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSOperatingSpeed( - U32 dwStatusControl, U32 *dwOperatingSpeed); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSSetOperatingSpeed( - U32 *dwStatusControl, U32 dwOperatingSpeed); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSOutputPortConnection( - U32 dwStatusControl, U32 *dwOutputPortConnection); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSPortType( - U32 dwStatusControl, U32 *dwPortType); - -/* Network discovery information retreival */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetNetworkDiscoveryValue(star_device_handle hDevice, - U32 *dwNetworkDiscovery); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_NDDeviceType( - U32 dwNetDisc, U32 *dwDeviceType); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_NDReturnPort( - U32 dwNetDisc, U32 *dwReturnPort); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_NDRunningLinks( - U32 dwNetDisc, U32 *dwRunningLinks); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_NDNumberLinks( - U32 dwNetDisc, U32 *dwNumberLinks); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetNumberLinks( - star_device_handle hDevice, U32 *dwNumLinks); - -/* Router identity register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetNetworkID( - star_device_handle hDevice, U32 dwNetworkID); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetNetworkID( - star_device_handle hDevice, U32 *dwNetworkID); - -/* Router control register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetPortTimeout( - star_device_handle hDevice, char bEnabled, - CFG_SPACEWIRE_PORT_TIMEOUT timeout); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetPortTimeout( - star_device_handle hDevice, char *bEnabled, - CFG_SPACEWIRE_PORT_TIMEOUT *timeout); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_IsPortTimeoutEnabled( - star_device_handle hDevice, char *bEnabled); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetAsInterface( - star_device_handle hDevice, char bEnabled, char bAddIdentifier); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetRouterControlRegister(star_device_handle hDevice, - U32 *dwRouterCtrlReg); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetRouterControlRegister(star_device_handle hDevice, - U32 dwRouterCtrlReg); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetTimeoutEnabled( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetTimeoutEnabled( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetTimeoutSelection( - U32 dwRouterCtrlReg, U32 *dwSelection); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetTimeoutSelection( - U32 *dwRouterCtrlReg, U32 dwSelection); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetDisableOnSilence( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetDisableOnSilence( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetStartOnRequest( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetStartOnRequest( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetSelfAddressing( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetSelfAddressing( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetInterface( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetInterface( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_RCGetInterfaceIdentifier(U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_RCSetInterfaceIdentifier(U32 *dwRouterCtrlReg, char bEnabled); - -/* Error active register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetErrorStatus( - star_device_handle hDevice, U32 *dwErrorStatus); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_ClearErrorStatus( - star_device_handle hDevice, U32 dwPorts); - -/* Time-Code register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetTimecodeRegister( - star_device_handle hDevice, U32 *dwTimecodeReg); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_TCGetValue( - U32 dwTimecodeReg, U32 *dwValue); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_TCGetFlags( - U32 dwTimecodeReg, U32 *dwValue); - -/* Manufacturer and Chip ID register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetIDRegister( - star_device_handle hDevice, U32 *dwIDs); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_IDGetManufacturer( - U32 dwIDs, U32 *dwManufacturerID); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_IDGetChipID(U32 dwIDs, - U32 *dwChipID); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_IDGetVersion(U32 dwIDs, - U32 *dwVersion); - -/* General purpose register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetGeneralPurposeStatus( - star_device_handle hDevice, U32 *dwGeneralPurposeStatus); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetGeneralPurposeStatus( - star_device_handle hDevice, U32 dwGeneralPurposeStatus); - -/* Tick enable register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetTickEnableStatus( - star_device_handle hDevice, U32 *dwTickEnableStatus); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetTickEnableStatus( - star_device_handle hDevice, U32 dwTickEnableStatus); - - -/* Base Transmit Rate functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetRouterBaseTransmitRate(star_device_handle hDevice, - U32 dwBaseClkSel); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetRouterBaseTransmitRate(star_device_handle hDevice, - U32 *dwBaseClkSel); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetBrickBaseTransmitRate(star_device_handle hDevice, - U32 dwBaseClk, U32 dwBaseDvdr, U32 dwEnableClk); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetBrickBaseTransmitRate(star_device_handle hDevice, - U32 *dwBaseClk, U32 *dwBaseDvdr, U32 *dwEnableClk); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetPrecisionTransmitRegister(star_device_handle hDevice, - U32 *dwPrecisionTransmit); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetPrecisionTransmitRegister(star_device_handle hDevice, - U32 dwPrecisionTransmit); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_PTGetPrecisionTransmitEnabled(U32 dwPrecisionTransmit, - char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_PTSetPrecisionTransmitEnabled(U32 *dwPrecisionTransmit, - char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_PTGetPrecisionTransmitReady(U32 dwPrecisionTransmit, - char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_PTGetPrecisionTransmitInUse(U32 dwPrecisionTransmit, - char *bEnabled); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetPrecisionTransmitRate(star_device_handle hDevice, - double *PrecisionTransmitRate); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetPrecisionTransmitRate(star_device_handle hDevice, - double PrecisionTransmitRate); - - - -#ifdef __cplusplus -} -#endif - - - -#endif /* SPACEWIRE_ROUTER_LIBRARY */ - - - diff --git a/spw_usb_driver_v2.61/inc/spw_usb_api.h b/spw_usb_driver_v2.61/inc/spw_usb_api.h deleted file mode 100755 --- a/spw_usb_driver_v2.61/inc/spw_usb_api.h +++ /dev/null @@ -1,326 +0,0 @@ -/******************************************************************************/ -/* */ -/* spw_usb_api.h */ -/* */ -/* Declaration of the functions provided by the SpaceWire USB API Library */ -/* for the SpaceWire USB devices. */ -/* */ -/* Version 2.61, September 21st 2012 */ -/* */ -/* Version 2.61, 21/09/12 */ -/* ====================== */ -/* Added support for STAR Fire and WBS II. */ -/* */ -/* Version 2.60, 04/01/12 */ -/* ====================== */ -/* Added support for EGSE and SPLT. */ -/* */ -/* Version 2.59, 15/08/11 */ -/* ====================== */ -/* Added support for RTC. */ -/* */ -/* Version 2.5, 12/10/10 */ -/* ===================== */ -/* Added support for Link Analyser Mk2. */ -/* */ -/* Version 1.5, 12/03/10 */ -/* ===================== */ -/* Added GetFirmwareVersionExtended and restored GetFirmwareVersion to */ -/* its original form. */ -/* */ -/* Version 1.4, 03/03/10 */ -/* ===================== */ -/* Fixed bug waiting on a receive to complete. */ -/* Added support for multiple send channels. */ -/* Added functions to get serial number and product ID. */ -/* */ -/* Version 1.3, 26/2/09 */ -/* ==================== */ -/* Updated the calling convention used in the function declaration to */ -/* __stdcall on Windows. */ -/* */ -/* Version 1.2, 21/1/09 */ -/* ==================== */ -/* Updated to compile on both Windows and Linux. */ -/* */ -/* Version 1.1, 8/10/06 */ -/* ==================== */ -/* Linux release. */ -/* */ -/* Version 1.0, 24/4/06 */ -/* ==================== */ -/* Initial version. */ -/* */ -/* Copyright (2012), STAR-Dundee Ltd., */ -/* STAR House, */ -/* 166 Nethergate, */ -/* Dundee, DD1 4EE, */ -/* Scotland, UK. */ -/* e-mail: support@star-dundee.com */ -/* */ -/******************************************************************************/ - - - -#ifndef SPACEWIRE_USB_API_H -#define SPACEWIRE_USB_API_H - - - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#include "spacewire_usb.h" - - - -#if defined(_WIN32) || defined(_WIN64) - - -/* Windows specifc functions and macros */ - -#ifdef SPACEWIREUSBAPI_EXPORTS -#define SPACEWIREUSB_API __declspec(dllexport) -#else -#define SPACEWIREUSB_API __declspec(dllimport) -#endif - -#ifdef _WIN64 -#define SPW_USB_API_CC -#else -#define SPW_USB_API_CC __stdcall -#endif /* WIN64 */ - - -#include "windows.h" - - -#else /* _WIN32 */ - - -/* Linux specific functions and macros */ - -#define SPACEWIREUSB_API -#define SPW_USB_API_CC - - -#endif /* _WIN32 */ - - - -/* Functions provided by the API */ - -/* General functions */ -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_Open( - star_device_handle *phDevice, int nDeviceNum); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_Close( - star_device_handle hDevice); -SPACEWIREUSB_API U8 SPW_USB_API_CC USBSpaceWire_CountDevices(); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_ListDevices(); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetDriverVersion(); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetIFVersion(); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetAPIVersion(); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetTimeout( - star_device_handle hDevice, double timeout); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetTimeout( - star_device_handle hDevice); -SPACEWIREUSB_API U8 SPW_USB_API_CC USBSpaceWire_GetSpaceWireAddress( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetSpaceWireAddress( - star_device_handle hDevice, U8 address); -SPACEWIREUSB_API U16 SPW_USB_API_CC USBSpaceWire_GetFirmwareVersion( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_GetFirmwareVersionExtended( - star_device_handle hDevice, SPACEWIRE_FIRMWARE_VERSION *pVersion); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_ClearEndpoints( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_ResetDevice( - star_device_handle hDevice); -SPACEWIREUSB_API SPACEWIRE_DEVICE_TYPE SPW_USB_API_CC - USBSpaceWire_GetDeviceType(star_device_handle hDevice); -SPACEWIREUSB_API SPACEWIRE_DEVICE_TYPE SPW_USB_API_CC - USBSpaceWire_GetUnopenedDeviceType(int deviceNum); -SPACEWIREUSB_API U16 SPW_USB_API_CC USBSpaceWire_GetDeviceProductID( - star_device_handle hDevice); -SPACEWIREUSB_API U16 SPW_USB_API_CC USBSpaceWire_GetUnopenedDeviceProductID( - int deviceNum); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableHeaderMode( - star_device_handle hDevice, char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsHeaderModeEnabled( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableNetworkMode( - star_device_handle hDevice, char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsNetworkModeEnabled( - star_device_handle hDevice); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetUSBVersion( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_GetAPIString(char *str); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_GetSerialNumber( - star_device_handle hDevice, U8 pSerialNumber[11]); - -/* Receive functions */ -SPACEWIREUSB_API unsigned long SPW_USB_API_CC - USBSpaceWire_GetDriverDroppedPackets(star_device_handle hDevice); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC - USBSpaceWire_GetDriverDroppedBytes(star_device_handle hDevice); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC USBSpaceWire_GetDroppedPackets( - star_device_handle hDevice); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC USBSpaceWire_GetDroppedBytes( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_RegisterReceiveOnPort( - star_device_handle hDevice, U8 port); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_UnregisterReceiveOnPort( - star_device_handle hDevice, U8 port); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_RegisterReceiveOnAllPorts( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_UnregisterReceiveOnAllPorts( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_ReadPackets( - star_device_handle hDevice, void *pBuffer, U32 nBufferSize, - U32 nPacketNum, char bWait, PUSB_SPACEWIRE_PACKET_PROPERTIES properties, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeRead( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeAllReads( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_GetReadStatus( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_WaitOnReadCompleting(star_device_handle hDevice, - USB_SPACEWIRE_ID identifier, char bWaitIndefinitely); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableReadThrottling( - star_device_handle hDevice, char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsReadThrottling( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetDriverReadBufferSize( - star_device_handle hDevice, unsigned long nBufferSize); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC - USBSpaceWire_GetDriverReadBufferSize(star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetDriverReadStructsNum( - star_device_handle hDevice, unsigned long nStructsNum); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC - USBSpaceWire_GetDriverReadStructsNum(star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_WaitOnReadPacketAvailable( - star_device_handle hDevice, double timeout); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_GetReadLength( - PUSB_SPACEWIRE_PACKET_PROPERTIES pProperties, U32 nPacketNum); -SPACEWIREUSB_API USB_SPACEWIRE_EOP_TYPE SPW_USB_API_CC - USBSpaceWire_GetReadEOPStatus(PUSB_SPACEWIRE_PACKET_PROPERTIES pProperties, - U32 nPacketNum); -SPACEWIREUSB_API SPACEWIRE_TRAFFIC_TYPE SPW_USB_API_CC - USBSpaceWire_GetReadTrafficType( - PUSB_SPACEWIRE_PACKET_PROPERTIES pProperties, U32 nPacketNum); - -/* Send functions */ -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_GetNumberOfSendChannels( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendPacketTo( - star_device_handle hDevice, void *pBuffer, U32 nBufferSize, - U8 *pAddress, U32 nAddressLen, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendPacketToOverChannel(star_device_handle hDevice, U8 channel, - void *pBuffer, U32 nBufferSize, U8 *pAddress, U32 nAddressLen, - char bWait, USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketsTo(star_device_handle hDevice, - void *pBuffer, U32 nPacketSize, U32 nBufferSize, U8 *pAddress, - U32 nAddressLen, char bWait, USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketsToOverChannel(star_device_handle hDevice, - U8 channel, void *pBuffer, U32 nPacketSize, U32 nBufferSize, - U8 *pAddress, U32 nAddressLen, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketLengthsTo(star_device_handle hDevice, - void **pBuffers, U32 *pPacketSizes, U32 nNumberOfPackets, U8 *pAddress, - U32 nAddressLen, char bWait, USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketLengthsToOverChannel( - star_device_handle hDevice, U8 channel, void **pBuffers, - U32 *pPacketSizes, U32 nNumberOfPackets, U8 *pAddress, U32 nAddressLen, - char bWait, USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendPacket( - star_device_handle hDevice, void *pBuffer, U32 nBufferSize, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendPacketOverChannel(star_device_handle hDevice, U8 channel, - void *pBuffer, U32 nBufferSize, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePackets(star_device_handle hDevice, void *pBuffer, - U32 nPacketSize, U32 nBufferSize, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketsOverChannel(star_device_handle hDevice, - U8 channel, void *pBuffer, U32 nPacketSize, U32 nBufferSize, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketLengths(star_device_handle hDevice, - void **pBuffers, U32 *pPacketSizes, U32 nNumberOfPackets, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketLengthsOverChannel( - star_device_handle hDevice, U8 channel, void **pBuffers, - U32 *pPacketSizes, U32 nNumberOfPackets, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeSend( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeAllSends( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_GetSendStatus( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_WaitOnSendCompleting(star_device_handle hDevice, - USB_SPACEWIRE_ID identifier, char bWaitIndefinitely); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_GetSendSize( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetDriverSendBufferSize( - star_device_handle hDevice, U32 nBufferSize); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_GetDriverSendBufferSize( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableSendEEPs( - star_device_handle hDevice, char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsSendEEPsEnabled( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_TunnelSendTraffic(star_device_handle hDevice, - SPACEWIRE_TRAFFIC_TYPE type, void *pBuffer, U32 nBufferSize, - USB_SPACEWIRE_EOP_TYPE eop, U8 port, char bWait, - USB_SPACEWIRE_ID *identifier); - -/* Time-code functions */ -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_PerformTickIn( - star_device_handle hDevice, U8 timein); -SPACEWIREUSB_API char SPW_USB_API_CC - USBSpaceWire_TC_EnableExternalTimecodeSelection(star_device_handle hDevice, - char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_Reset( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_EnableAutoTickIn( - star_device_handle hDevice, char enableAutoTickIns, char enableAllPorts); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_SetAutoTickInFrequency( - star_device_handle hDevice, U32 frequency); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_StartReadingTimecodes( - star_device_handle hDevice, void *arg, void (*callbackfunc)( - star_device_handle hDevice, U8 timecode, void *arg)); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_TC_StopReadingTimecodes( - star_device_handle hDevice); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_TC_GetClockFrequency( - star_device_handle hDevice); - - - -#ifdef __cplusplus -} -#endif - - - -#endif /* SPACEWIRE_USB_API_H */ - - diff --git a/spw_usb_driver_v2.61/inc/star-dundee_types.h b/spw_usb_driver_v2.61/inc/star-dundee_types.h deleted file mode 100644 --- a/spw_usb_driver_v2.61/inc/star-dundee_types.h +++ /dev/null @@ -1,161 +0,0 @@ -/** - * \file star-dundee_types.h - * \brief Definitions of STAR-Dundee commonly used types. - * \author Stuart Mills\n - * STAR-Dundee\n - * c/o School of Computing\n - * University of Dundee\n - * Dundee, DD1 4HN\n - * Scotland, UK\n - * e-mail: support@star-dundee.com - * - * This file contains the definitions of common types used by STAR-Dundee - * software drivers and APIs. - * - * IMPORTANT NOTE: - * \note If you are experiencing compilation errors indicating that - * U8 is already defined, for example, please add the following - * line to your code prior to including this file:\n - * \#define NO_STAR_TYPES\n - * Alternatively you can compile your code with a flag of - * -DNO_STAR_TYPES.\n - * - * \version 1.1 - August 22nd 2011\n - * Removed star_device_handle, not required by STAR-System.\n\n - * - * \version 1.0 - March 22nd 2007\n - * Initial version.\n\n - * - * Copyright © 2009 STAR-Dundee Ltd - */ - - -/** - * \defgroup STARDundeeTypes STAR-Dundee Types - * This section contains the definitions of types used in STAR-Dundee software - * drivers and APIs. - */ - -/** - * \def TRUE - * \ingroup STARDundeeTypes - * A value that can be used to represent the boolean value of true. - */ - -/** - * \def FALSE - * \ingroup STARDundeeTypes - * A value that can be used to represent the boolean value of false. - */ - -/** - * \typedef U8 - * \ingroup STARDundeeTypes - * A type that can be used to represent an unsigned 8-bit number. - */ - -/** - * \typedef U16 - * \ingroup STARDundeeTypes - * A type that can be used to represent an unsigned 16-bit number. - */ - -/** - * \typedef U32 - * \ingroup STARDundeeTypes - * A type that can be used to represent an unsigned 32-bit number. - */ - -/** - * \typedef REGISTER - * \ingroup STARDundeeTypes - * A type that can be used to represent a 4-byte register. - */ - - -#ifndef STAR_DUNDEE_TYPES -#define STAR_DUNDEE_TYPES - -/* Define TRUE and FALSE */ -#ifndef TRUE - #define TRUE 1 -#endif -#ifndef FALSE - #define FALSE 0 -#endif - -#ifndef NO_STAR_TYPES - -#if (defined(__linux__) || defined(LINUX) || defined(__LINUX__) || \ - defined(__CYGWIN__)) && defined(__KERNEL__) - - #include - - /* Define U8, U16 and U32 in the Linux kernel */ - #ifndef U8 - typedef u8 U8; - #endif - #ifndef U16 - typedef u16 U16; - #endif - #ifndef U32 - typedef u32 U32; - #endif - -#else - - #include - - /* Define U8 */ - #ifndef U8 - #if (UCHAR_MAX == 0xff) - typedef unsigned char U8; - #elif (UINT_MAX == 0xff) - typedef unsigned int U8; - #else - #error "No valid definition of U8 available" - #endif - #endif - - /* Define U16 */ - #ifndef U16 - #if (USHRT_MAX == 0xffff) - typedef unsigned short U16; - #elif (UINT_MAX == 0xffff) - typedef unsigned int U16; - #elif (UCHAR_MAX == 0xffff) - typedef unsigned char U16; - #else - #error "No valid definition of U16 available" - #endif - #endif - - /* Define U32 */ - #ifndef U32 - #if (UINT_MAX == 0xffffffff) - typedef unsigned int U32; - #elif (ULONG_MAX == 0xffffffff) - typedef unsigned long U32; - #elif (USHRT_MAX == 0xffffffff) - typedef unsigned short U32; - #elif (UCHAR_MAX == 0xffffffff) - typedef unsigned char U32; - #else - #error "No valid definition of U32 available" - #endif - #endif - -#endif /* Linux kernel test */ - - -#endif /* NO_STAR_TYPES */ - -/* Define REGISTER */ -#ifndef REGISTER - typedef U32 REGISTER; -#endif - - -#endif /* STAR_DUNDEE_TYPES */ - - diff --git a/spw_usb_driver_v2.61/inc/star_dundee_types.h b/spw_usb_driver_v2.61/inc/star_dundee_types.h deleted file mode 100755 --- a/spw_usb_driver_v2.61/inc/star_dundee_types.h +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************/ -/* */ -/* star_dundee_types.h */ -/* */ -/* This file contains the definitions of common types used by STAR-Dundee */ -/* drivers and APIs. */ -/* */ -/* IMPORTANT NOTE: If you are experiencing compilation errors indicating */ -/* that U8 is already defined, for example, please add the */ -/* following line to your code prior to including this */ -/* file: */ -/* #define NO_STAR_TYPES */ -/* Alternatively you can compile your code with a flag of */ -/* -DNO_STAR_TYPES. */ -/* */ -/* Version 1.0, March 22nd 2007 */ -/* */ -/* Version 1.0 - March 22nd 2007 */ -/* =========== */ -/* Initial version. */ -/* */ -/* Copyright (2012), STAR-Dundee Ltd., */ -/* STAR House, */ -/* 166 Nethergate, */ -/* Dundee, DD1 4EE, */ -/* Scotland, UK. */ -/* e-mail: support@star-dundee.com */ -/* */ -/******************************************************************************/ - - - -#ifndef STAR_DUNDEE_TYPES -#define STAR_DUNDEE_TYPES - - -typedef void *star_device_handle; - - -#ifndef NO_STAR_TYPES - -#if (defined(__linux__) || defined(LINUX) || defined(__LINUX__)) && \ - defined(__KERNEL__) - - #include - - /* Define U8, U16 and U32 in the Linux kernel */ - typedef u8 U8; - typedef u16 U16; - typedef u32 U32; - -#else - - #include - - /* Define U8 */ - #if (UCHAR_MAX == 0xff) - typedef unsigned char U8; - #elif (UINT_MAX == 0xff) - typedef unsigned int U8; - #else - #error "No valid definition of U8 available" - #endif - - /* Define U16 */ - #if (USHRT_MAX == 0xffff) - typedef unsigned short U16; - #elif (UINT_MAX == 0xffff) - typedef unsigned int U16; - #elif (UCHAR_MAX == 0xffff) - typedef unsigned char U16; - #else - #error "No valid definition of U16 available" - #endif - - /* Define U32 */ - #if (UINT_MAX == 0xffffffff) - typedef unsigned int U32; - #elif (ULONG_MAX == 0xffffffff) - typedef unsigned long U32; - #elif (USHRT_MAX == 0xffffffff) - typedef unsigned short U32; - #elif (UCHAR_MAX == 0xffffffff) - typedef unsigned char U32; - #else - #error "No valid definition of U32 available" - #endif - -#endif /* Linux kernel test */ - - -#endif /* NO_STAR_TYPES */ - - -#endif /* STAR_DUNDEE_TYPES */ - - diff --git a/spw_usb_driver_v2.61/lib/i386/spacewire_cuba_software b/spw_usb_driver_v2.61/lib/i386/spacewire_cuba_software deleted file mode 100755 index b688714265809f1a96871a0774c9e91bf18f3075..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 GIT binary patch literal 0 Hc$@IMPORTANT NOTE: - * \note If you are experiencing compilation errors indicating that - * U8 is already defined, for example, please add the following - * line to your code prior to including this file:\n - * \#define NO_STAR_TYPES\n - * Alternatively you can compile your code with a flag of - * -DNO_STAR_TYPES.\n - * (Copied from star_dundee_types.h) - * - * \version 3.2 - June 19th 2012\n - * Fixed bug when checking a write command packet or read reply packet - * has a data length of 0. - * Updates to documentation. - * - * \version 3.1 - February 10th 2012\n - * Minor updates to packet types to avoid errors in static - * analysers.\n\n - * - * \version 3.0 - October 14th 2011\n - * Updated linking process on Windows.\n - * Updated library file name.\n\n - * - * \version 2.1 - August 22nd 2011\n - * Made minor improvements to the internal structure.\n\n - * - * \version 2.0 - October 28th 2009\n - * Changed internal architecture to minimise memory allocations.\n - * Restored __stdcall calling convention on Windows.\n - * Updated names to be consistent with terminology in latest RMAP - * standard.\n - * Added functions to calculate the length of different packet types - * and to fill a buffer with specific packets.\n\n - * - * \version 1.9 - July 29th 2009\n - * Fixed problem with byte ordering in return value of - * RMAP_GetAddress.\n - * Fixed bug when creating read and write reply packets, with a packet - * structure provided.\n\n - * - * \version 1.8 - February 26th 2009\n - * Updated the calling convention used in the function declaration to - * __stdcall on Windows.\n\n - * - * \version 1.7 - November 20th 2008\n - * Fixed problem with naming of RMAP_IsCRCValid in header file.\n - * Added function to calculate a CRC starting from a CRC seed - * value.\n\n - * - * \version 1.6 - October 29th 2007\n - * Added support for SpaceCube.\n\n - * - * \version 1.5 - March 23rd 2007\n - * Used star_dundee_types.h to represent integer values of 1, 2 and 4 - * bytes in a cross-platform manner.\n - * Fixed problems encountered on big endian machines.\n\n - * - * \version 1.4 - March 19th 2007\n - * Improved freeing of memory following errors.\n\n - * - * \version 1.3 - November 7th 2006\n - * Updated to be multi-platform.\n - * Using new CRC table.\n - * Fixed error when checking the format of read-modify-write command - * packets, data length incorrect.\n - * Fixed error when identifying the start of the extended and normal - * read/write address.\n - * Fixed error when reading the data length in a read command.\n\n - * - * \version 1.2 - April 3rd 2006\n - * Fixed potential problems with RMAP_PACKET_STATUS enum being an - * undefined size (no change to this file required).\n\n - * - * \version 1.1 - March 9th 2006\n - * Added support for different byte alignment requirements.\n\n - * - * \version 1.0 - December 20th 2005\n - * Initial version.\n\n - * - * Copyright © 2009 STAR-Dundee Ltd - */ - - - -#ifndef RMAP_PACKET_LIBRARY_H -#define RMAP_PACKET_LIBRARY_H - - - -#include "star-dundee_types.h" - - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#if defined(_WIN32) || defined(_WIN64) - #ifdef _WIN64 - #define RMAPPACKETLIBRARY_CC - #else - #define RMAPPACKETLIBRARY_CC __stdcall - #endif -#else - #define RMAPPACKETLIBRARY_CC -#endif - - - -typedef enum -{ - RMAP_SUCCESS = 0x00, - RMAP_GENERAL_ERROR = 0x01, - RMAP_UNUSED_PACKET_TYPE_OR_COMMAND_CODE = 0x02, - RMAP_INVALID_KEY = 0x03, - RMAP_INVALID_DATA_CRC = 0x04, - RMAP_EARLY_EOP = 0x05, - RMAP_TOO_MUCH_DATA = 0x06, - RMAP_EEP = 0x07, - RMAP_VERIFY_BUFFER_OVERRUN = 0x09, - RMAP_COMMAND_NOT_IMPLEMENTED_OR_AUTHORISED = 0x0a, - RMAP_RMW_DATA_LENGTH_ERROR = 0x0b, - RMAP_INVALID_TARGET_LOGICAL_ADDRESS = 0x0c, - RMAP_INVALID_STATUS = 0xff -} RMAP_STATUS; - - - -#define RMAP_PROTOCOL_IDENTIFIER 1 - -#define RMAP_RESERVED_BIT 0x80 -#define RMAP_COMMAND_BIT 0x40 -#define RMAP_WRITE_OPERATION_BIT 0x20 -#define RMAP_VERIFY_BEFORE_WRITE_BIT 0x10 -#define RMAP_REPLY_BIT 0x08 -#define RMAP_INCREMENT_ADDRESS_BIT 0x04 -#define RMAP_REPLY_ADDRESS_LENGTH_BITS 0x03 - - - -typedef enum -{ - RMAP_WRITE_COMMAND = (RMAP_COMMAND_BIT | - RMAP_WRITE_OPERATION_BIT), - RMAP_WRITE_REPLY = (RMAP_WRITE_OPERATION_BIT), - RMAP_READ_COMMAND = (RMAP_COMMAND_BIT), - RMAP_READ_REPLY = (0), - RMAP_READ_MODIFY_WRITE_COMMAND = (RMAP_COMMAND_BIT | - RMAP_VERIFY_BEFORE_WRITE_BIT), - RMAP_READ_MODIFY_WRITE_REPLY = (RMAP_VERIFY_BEFORE_WRITE_BIT), - RMAP_INVALID_PACKET_TYPE = (0xff) -} RMAP_PACKET_TYPE; - - - -typedef struct -{ - RMAP_PACKET_TYPE packetType; - U8 *pTargetAddress; - unsigned long targetAddressLength; - U8 *pReplyAddress; - unsigned long replyAddressLength; - U8 *pProtocolIdentifier; - U8 *pInstruction; - char verifyBeforeWrite; - char acknowledge; - char incrementAddress; - U8 *pKey; - U16 *pTransactionIdentifier; - U32 *pReadWriteAddress; - U8 *pExtendedReadWriteAddress; - U8 *pStatus; - U8 *pHeader; - unsigned long headerLength; - U8 *pHeaderCRC; - U8 *pData; - void *pDataLength; - U32 dataLength; - U8 *pDataCRC; - U8 *pMask; - U8 maskLength; - U8 *pRawPacket; - unsigned long rawPacketLength; -} RMAP_PACKET; - - - -/* Declarations of the functions provided by the RMAP Packet Library */ - -U32 -RMAPPACKETLIBRARY_CC -RMAP_GetVersion( - void - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_CalculateCRC( - void *pBuffer, - unsigned long len - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_CalculateCRCWithSeed( - void *pBuffer, - unsigned long len, - U8 crc - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_IsCRCValid( - void *pBuffer, - unsigned long len, - U8 crc - ); - -RMAP_STATUS -RMAPPACKETLIBRARY_CC -RMAP_CheckPacketValid( - void *pRawPacket, - unsigned long packetLength, - RMAP_PACKET *pPacketStruct, - char checkPacketTooLong - ); - -RMAP_PACKET_TYPE -RMAPPACKETLIBRARY_CC -RMAP_GetPacketType( - RMAP_PACKET *pPacketStruct - ); - -U8 * -RMAPPACKETLIBRARY_CC -RMAP_GetTargetAddress( - RMAP_PACKET *pPacketStruct, - unsigned long *pTargetAddressLength - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_GetVerifyBeforeWrite( - RMAP_PACKET *pPacketStruct - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_GetPerformAcknowledgement( - RMAP_PACKET *pPacketStruct - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_GetIncrementAddress( - RMAP_PACKET *pPacketStruct - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_GetKey( - RMAP_PACKET *pPacketStruct - ); - -U8 * -RMAPPACKETLIBRARY_CC -RMAP_GetReplyAddress( - RMAP_PACKET *pPacketStruct, - unsigned long *pReplyAddressLength - ); - -U16 -RMAPPACKETLIBRARY_CC -RMAP_GetTransactionID( - RMAP_PACKET *pPacketStruct - ); - -U32 -RMAPPACKETLIBRARY_CC -RMAP_GetAddress( - RMAP_PACKET *pPacketStruct, - U8 *pExtendedAddress - ); - -U8 * -RMAPPACKETLIBRARY_CC -RMAP_GetData( - RMAP_PACKET *pPacketStruct, - U32 *pDataLength - ); - -U32 -RMAPPACKETLIBRARY_CC -RMAP_GetReadLength( - RMAP_PACKET* pPacketStruct - ); - -RMAP_STATUS -RMAPPACKETLIBRARY_CC -RMAP_GetStatus( - RMAP_PACKET *pPacketStruct - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_GetHeaderCRC( - RMAP_PACKET *pPacketStruct - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_GetDataCRC( - RMAP_PACKET *pPacketStruct - ); - -U8 * -RMAPPACKETLIBRARY_CC -RMAP_GetMask( - RMAP_PACKET *pPacketStruct, - U8 *pMaskLength - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateWriteCommandPacketLength( - unsigned long targetAddressLength, - unsigned long replyAddressLength, - U32 dataLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillWriteCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char verifyBeforeWrite, - char acknowledge, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 writeAddress, - U8 extendedWriteAddress, - U8 *pData, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildWriteCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char verifyBeforeWrite, - char acknowledge, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 writeAddress, - U8 extendedWriteAddress, - U8 *pData, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildWriteRegisterPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char verifyBeforeWrite, - char acknowledge, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 writeAddress, - U8 extendedWriteAddress, - U32 registerValue, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateWriteReplyPacketLength( - unsigned long initiatorAddressLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillWriteReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - char verifyBeforeWrite, - char incrementAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildWriteReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - char verifyBeforeWrite, - char incrementAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateReadCommandPacketLength( - unsigned long targetAddressLength, - unsigned long replyAddressLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillReadCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 readAddress, - U8 extendedReadAddress, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 readAddress, - U8 extendedReadAddress, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadRegisterPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 readAddress, - U8 extendedReadAddress, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateReadReplyPacketLength( - unsigned long initiatorAddressLength, - U32 dataLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillReadReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - char incrementAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - U8 *pData, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - char incrementAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - U8 *pData, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateReadModifyWriteCommandPacketLength( - unsigned long targetAddressLength, - unsigned long replyAddressLength, - U32 dataAndMaskLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillReadModifyWriteCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - U8 key, - U16 transactionIdentifier, - U32 readModifyWriteAddress, - U8 extendedReadModifyWriteAddress, - U8 dataAndMaskLength, - U8 *pData, - U8 *pMask, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadModifyWriteCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - U8 key, - U16 transactionIdentifier, - U32 readModifyWriteAddress, - U8 extendedReadModifyWriteAddress, - U8 dataAndMaskLength, - U8 *pData, - U8 *mask, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadModifyWriteRegisterPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - U8 key, - U16 transactionIdentifier, - U32 readModifyWriteAddress, - U8 extendedReadModifyWriteAddress, - U32 registerValue, - U32 mask, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateReadModifyWriteReplyPacketLength( - unsigned long initiatorAddressLength, - U32 dataLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillReadModifyWriteReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - unsigned long dataLength, - U8 *pData, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadModifyWriteReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - unsigned long dataLength, - U8 *pData, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -void -RMAPPACKETLIBRARY_CC -RMAP_FreeBuffer( - void *pBuffer - ); - - -/* Macros for accessing the version */ - -#define RMAP_GET_VERSION_MAJOR(versionInfo) (((version) & 0xff000000) >> 24) -#define RMAP_GET_VERSION_MINOR(versionInfo) (((version) & 0x00ff0000) >> 16) -#define RMAP_GET_VERSION_EDIT(versionInfo) (((version) & 0x0000ffc0) >> 6) -#define RMAP_GET_VERSION_PATCH(versionInfo) ((version) & 0x0000003f) - - - -#ifdef __cplusplus -} -#endif - - - -#endif /* RMAP_PACKET_LIBRARY_H */ - - - diff --git a/spw_usb_driver_v2.62/inc/spacewire_usb.h b/spw_usb_driver_v2.62/inc/spacewire_usb.h deleted file mode 100755 --- a/spw_usb_driver_v2.62/inc/spacewire_usb.h +++ /dev/null @@ -1,205 +0,0 @@ -/******************************************************************************/ -/* */ -/* spacewire_usb.h */ -/* */ -/* Header file for all constants which may be used with the STAR-Dundee */ -/* SpaceWire USB driver. */ -/* */ -/* Version 2.61, September 17th 2012 */ -/* */ -/* Version 2.61, 17/09/12 */ -/* ====================== */ -/* Added support for STAR Fire and WBS II. */ -/* */ -/* Version 2.60, 04/01/12 */ -/* ====================== */ -/* Added support for EGSE and SPLT. */ -/* */ -/* Version 2.59, 15/08/11 */ -/* ====================== */ -/* Added support for RTC. */ -/* */ -/* Version 2.58, 12/10/10 */ -/* ===================== */ -/* Added support for Link Analyser Mk2. */ -/* */ -/* Version 2.51 */ -/* ============ */ -/* Added use of star_dundee_types.h. */ -/* */ -/* Version 2.5 */ -/* =========== */ -/* Initial version, following change to new architecture. */ -/* */ -/* Copyright (2012), STAR-Dundee Ltd., */ -/* STAR House, */ -/* 166 Nethergate, */ -/* Dundee, DD1 4EE, */ -/* Scotland, UK. */ -/* e-mail: support@star-dundee.com */ -/* */ -/******************************************************************************/ - - - -#ifndef SPACEWIRE_USB_H -#define SPACEWIRE_USB_H - - - -#ifdef __cplusplus -extern "C" { -#endif - - -/* The types used by the API */ -#include "star_dundee_types.h" - - -/* End of packet marker types */ -#define SPACEWIRE_USB_EOP_CHAR ((U8)0x80) -#define SPACEWIRE_USB_EEP_CHAR ((U8)0x40) - -/* The protocol byte used to identify LODI packets */ -#define SPACEWIRE_USB_LODI_PROTOCOL (0xd1) - - - -/* Possible results of read and send operations */ -typedef enum -{ - TRANSFER_NOT_STARTED = 0, - TRANSFER_STARTED = 1, - TRANSFER_SUCCESS = 2, - TRANSFER_ERROR_DISCONNECT = 3, - TRANSFER_ERROR_PARITY = 4, - TRANSFER_ERROR_UNKNOWN = 5, - TRANSFER_ERROR_TIMEOUT = 6, - TRANSFER_ERROR_LINK_NOT_STARTED = 7, - TRANSFER_ERROR_USER_BUFFER_LOCK_FAILED = 8, - TRANSFER_ERROR_LINK_ALREADY_IN_USE = 9, - TRANSFER_ERROR_RECEIVE_BUFFER_FULL = 0xa, - TRANSFER_ERROR_OUT_OF_MEMORY = 0xb, - TRANSFER_ERROR_NOT_FOUND = 0xc, - TRANSFER_ERROR_USB_ERROR = 0xd, - TRANSFER_ERROR_NOT_REGISTERED_TO_RECEIVE = 0xe -} USB_SPACEWIRE_STATUS, *PUSB_SPACEWIRE_STATUS; - - - -/* Possible traffic types */ -typedef enum -{ - SPACEWIRE_TRAFFIC_UNKNOWN = -1, - SPACEWIRE_TRAFFIC_PACKET = 0, - SPACEWIRE_TRAFFIC_TIMECODE = 1, - SPACEWIRE_TRAFFIC_CONTROL = 2 -} SPACEWIRE_TRAFFIC_TYPE, *PSPACEWIRE_TRAFFIC_TYPE; - - - -/* The different end of packet marker types */ -typedef enum -{ - SPACEWIRE_USB_NO_EOP = 0, - SPACEWIRE_USB_EOP = SPACEWIRE_USB_EOP_CHAR, - SPACEWIRE_USB_EEP = SPACEWIRE_USB_EEP_CHAR -} USB_SPACEWIRE_EOP_TYPE, *PUSB_SPACEWIRE_EOP_TYPE; - - - -/* Possible device types */ -typedef enum -{ - SPACEWIRE_DEVICE_UNKNOWN = -1, - SPACEWIRE_ROUTER_USB = 0, - SPACEWIRE_BRICK = 1, - SPACEWIRE_LINK_ANALYSER = 2, - SPACEWIRE_CONFORMANCE_TESTER = 3, - SPACEWIRE_TUNNEL_BRICK = 4, - SPACEWIRE_LINK_ANALYSER_MK2 = 5, - SPACEWIRE_RTC = 6, - SPACEWIRE_EGSE = 7, - SPACEWIRE_PHYSICAL_LAYER_TESTER = 8, - STAR_FIRE = 9, - WBS_II = 10 -} SPACEWIRE_DEVICE_TYPE, *PSPACEWIRE_DEVICE_TYPE; - - - - -/* Structure used to store packet lengths and EOPs for a read request */ -typedef struct -{ - unsigned long len; - USB_SPACEWIRE_EOP_TYPE eop; - SPACEWIRE_TRAFFIC_TYPE type; -} USB_SPACEWIRE_PACKET_PROPERTIES, *PUSB_SPACEWIRE_PACKET_PROPERTIES; - - - -/* The type of all send and receive identifiers */ -typedef void * USB_SPACEWIRE_ID; - - - -/* Structure used to represent the firmware version of a device */ -typedef struct -{ - U8 major; - U8 minor; - U16 edit; - U8 patch; -} SPACEWIRE_FIRMWARE_VERSION; - - -/* The product ID used by each STAR-Dundee SpaceWire device */ - -/** The product ID used by a device with no EEPROM */ -#define SPACEWIRE_PRODUCT_ID_NO_EEPROM (0x8613) -/** The product ID used by an old device in the power check state */ -#define SPACEWIRE_PRODUCT_ID_POWER_CHECK (0x461f) -/** The product ID used by an old device with no ID set */ -#define SPACEWIRE_PRODUCT_ID_NO_ID (0x1002) -/** The product ID used by the SpaceWire Router-USB */ -#define SPACEWIRE_PRODUCT_ID_ROUTER_USB (0x1011) -/** The product ID used by the SpaceWire-USB Brick */ -#define SPACEWIRE_PRODUCT_ID_BRICK (0x1012) -/** The product ID used by the SpaceWire Link Analyser */ -#define SPACEWIRE_PRODUCT_ID_LINK_ANALYSER (0x1013) -/** The product ID used by the SpaceWire Conformance Tester */ -#define SPACEWIRE_PRODUCT_ID_CONFORMANCE_TESTER (0x1014) -/** The product ID used by the SpaceWire-IP Tunnel */ -#define SPACEWIRE_PRODUCT_ID_TUNNEL_BRICK (0x1015) -/** The product ID used by the SpaceWire Router-USB with multiple channels */ -#define SPACEWIRE_PRODUCT_ID_ROUTER_MULTIPLE_CHANNELS (0x1016) -/** The product ID used by the SpaceWire Router-USB II Rev 4 */ -#define SPACEWIRE_PRODUCT_ID_ROUTER_USB_II_REV4 (0x1017) -/** The product ID used by the SpaceWire Link Analyser Mk2 */ -#define SPACEWIRE_PRODUCT_ID_LINK_ANALYSER_MK2 (0x1018) -/** The product ID used by the SpaceWire RTC */ -#define SPACEWIRE_PRODUCT_ID_RTC (0x1019) -/** The product ID used by the SpaceWire EGSE */ -#define SPACEWIRE_PRODUCT_ID_EGSE (0x101a) -/** The product ID used by the SpaceWire SPLT */ -#define SPACEWIRE_PRODUCT_ID_SPLT (0x101b) -/** The product ID used by the STAR Fire device */ -#define SPACEWIRE_PRODUCT_ID_STAR_FIRE (0x101c) -/** The product ID used by the WBS II device */ -#define SPACEWIRE_PRODUCT_ID_WBS_II (0x101d) -/** A product ID to be used by a future device */ -#define SPACEWIRE_PRODUCT_ID_FUTURE_101E (0x101e) -/** A product ID to be used by a future device */ -#define SPACEWIRE_PRODUCT_ID_FUTURE_101F (0x101f) - - -#ifdef __cplusplus -} -#endif - - - -#endif /* SPACEWIRE_USB_H */ - - - diff --git a/spw_usb_driver_v2.62/inc/spw_config_library.h b/spw_usb_driver_v2.62/inc/spw_config_library.h deleted file mode 100755 --- a/spw_usb_driver_v2.62/inc/spw_config_library.h +++ /dev/null @@ -1,659 +0,0 @@ -/******************************************************************************/ -/* */ -/* spw_config_library.h */ -/* */ -/* Declaration of the functions, and definition of macros provided by the */ -/* SpaceWire Router Configuration Library for the SpaceWire USB and */ -/* SpaceWire PCI drivers. */ -/* */ -/* Version 2.62 - November 7th 2012 */ -/* */ -/* Version 2.62 - 07/11/12 */ -/* ======================= */ -/* Removed commas at end of enumerators. */ -/* */ -/* Version 2.60 - 05/04/12 */ -/* ======================= */ -/* Updated declarations to replace CFGSpaceWire_EnableReadOnAllPorts */ -/* with CFGSpaceWire_EnableReceiveOnAllPorts and */ -/* CFGSpaceWire_IsReadingOnAllPortsEnabled with */ -/* CFGSpaceWire_IsReceiveOnAllPortsEnabled. */ -/* */ -/* Version 2.54 - 10/12/10 */ -/* ======================= */ -/* Replaced CFGSpaceWire_RTOutputPorts with */ -/* CFGSpaceWire_RTGetOutputPorts, which doesn't unnecessarily shift the */ -/* output port bits and is consistent with */ -/* CFGSpaceWire_RTBuildRoutingTableEntry. */ -/* */ -/* Version 2.53 - 26/02/09 */ -/* ======================= */ -/* Updated the calling convention used in the function declarations to */ -/* __stdcall on Windows. */ -/* */ -/* Version 2.52, 04/11/08 */ -/* ====================== */ -/* Added support for precision transmit rate on new Router-USB. */ -/* Added chip ID values. */ -/* */ -/* Version 2.51, 21/10/08 */ -/* ====================== */ -/* Updated to support Windows. */ -/* */ -/* Version 2.50, 08/11/06 */ -/* ====================== */ -/* Initial version, following change to new structure. */ -/* */ -/* Copyright (c) 2012, STAR-Dundee Ltd., */ -/* STAR House, */ -/* 166 Nethergate, */ -/* Dundee, DD1 4EE, */ -/* Scotland, UK. */ -/* http://www.star-dundee.com */ -/* e-mail: support@star-dundee.com */ -/* */ -/******************************************************************************/ - - - -#ifndef SPACEWIRE_ROUTER_LIBRARY -#define SPACEWIRE_ROUTER_LIBRARY - - -#include "star_dundee_types.h" - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#if defined(_WIN32) || defined(_WIN64) - - -/* Windows specifc functions and macros */ - -#ifdef ROUTERCONFIGURATIONLIBRARY_EXPORTS -#define ROUTER_CONFIG_LIBRARY __declspec(dllexport) -#else -#define ROUTER_CONFIG_LIBRARY __declspec(dllimport) -#endif - -/* The calling convention to be used */ -#ifdef _WIN64 -#define ROUTER_CONFIG_CC -#else -#define ROUTER_CONFIG_CC __stdcall -#endif /* WIN64 */ - - -#include "windows.h" - - -#else /* _WIN32 */ - - -/* Linux specific functions and macros */ - -#define ROUTER_CONFIG_LIBRARY -#define ROUTER_CONFIG_CC - - -#endif /* _WIN32 */ - - - -/* Possible bit values */ -#define BIT0 (0x00000001) -#define BIT1 (0x00000002) -#define BIT2 (0x00000004) -#define BIT3 (0x00000008) -#define BIT4 (0x00000010) -#define BIT5 (0x00000020) -#define BIT6 (0x00000040) -#define BIT7 (0x00000080) -#define BIT8 (0x00000100) -#define BIT9 (0x00000200) -#define BIT10 (0x00000400) -#define BIT11 (0x00000800) -#define BIT12 (0x00001000) -#define BIT13 (0x00002000) -#define BIT14 (0x00004000) -#define BIT15 (0x00008000) -#define BIT16 (0x00010000) -#define BIT17 (0x00020000) -#define BIT18 (0x00040000) -#define BIT19 (0x00080000) -#define BIT20 (0x00100000) -#define BIT21 (0x00200000) -#define BIT22 (0x00400000) -#define BIT23 (0x00800000) -#define BIT24 (0x01000000) -#define BIT25 (0x02000000) -#define BIT26 (0x04000000) -#define BIT27 (0x08000000) -#define BIT28 (0x10000000) -#define BIT29 (0x20000000) -#define BIT30 (0x40000000) -#define BIT31 (0x80000000) - - - -/* Exported enums and structs */ - - - -/* Read write address errors */ -typedef enum -{ - CFG_TRANSFER_SUCCESS = 0x00, - CFG_TRANSMIT_PACKET_FAILURE = 0x01, - CFG_REPLY_PACKET_FAILURE = 0x02, - CFG_REPLY_PACKET_TOO_BIG = 0x03, - CFG_REPLY_PACKET_TOO_SMALL = 0x04, - CFG_REPLY_PACKET_NAK = 0x05, - CFG_REPLY_PACKET_CHECKSUM_ERROR = 0x06 -} CFG_SPACEWIRE_STATUS; - - - -/* Length of port timeout */ -typedef enum -{ - CFG_PORT_TIMEOUT_100US = 0x0, - CFG_PORT_TIMEOUT_1MS = 0x1, - CFG_PORT_TIMEOUT_10MS = 0x2, - CFG_PORT_TIMEOUT_100MS = 0x3, - CFG_PORT_TIMEOUT_1S = 0x4 -} CFG_SPACEWIRE_PORT_TIMEOUT; - - - -/* SpaceWire Port errors */ -#define CFG_SPACEWIRE_NO_ERRORS (0) -#define CFG_SPACEWIRE_ERROR_ACTIVE (BIT0) -#define CFG_SPACEWIRE_PACKET_ADDRESS_ERROR (BIT1) -#define CFG_SPACEWIRE_PORT_TIMEOUT_ERROR (BIT2) -#define CFG_SPACEWIRE_DISCONNECT_ERROR (BIT3) -#define CFG_SPACEWIRE_PARITY_ERROR (BIT4) -#define CFG_SPACEWIRE_ESCAPE_ERROR (BIT5) -#define CFG_SPACEWIRE_CREDIT_ERROR (BIT6) -#define CFG_SPACEWIRE_CHARACTER_SEQUENCE_ERROR (BIT7) -#define CFG_SPACEWIRE_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | \ - BIT4 | BIT5 | BIT6 | BIT7) - -/* Config Port errors */ -#define CFG_CONFIG_NO_ERRORS (0) -#define CFG_CONFIG_ERROR_ACTIVE (BIT0) - -/* Config Port errors (non-RMAP) */ -#define CFG_CONFIG_PACKET_ADDRESS_ERROR (BIT1) -#define CFG_CONFIG_PORT_TIMEOUT_ERROR (BIT2) -#define CFG_CONFIG_CHECKSUM_ERROR (BIT3) -#define CFG_CONFIG_TOO_SHORT_ERROR (BIT4) -#define CFG_CONFIG_TOO_LONG_ERROR (BIT5) -#define CFG_CONFIG_PACKET_EEP_ERROR (BIT6) -#define CFG_CONFIG_PROTOCOL_BYTE_ERROR (BIT7) -#define CFG_CONFIG_INVALID_REGISTER_ERROR (BIT8) -#define CFG_CONFIG_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | \ - BIT4 | BIT5 | BIT6 | BIT7 | \ - BIT8) - -/* Config Port errors (RMAP) */ -#define CFG_CONFIG_RMAP_PORT_TIMEOUT_ERROR (BIT1) -#define CFG_CONFIG_RMAP_INVALID_HEADER_CRC (BIT2) -#define CFG_CONFIG_RMAP_INVALID_DATA_CRC (BIT3) -#define CFG_CONFIG_RMAP_INVALID_DESTINATION_KEY (BIT4) -#define CFG_CONFIG_RMAP_COMMAND_NOT_IMPLEMENTED (BIT5) -#define CFG_CONFIG_RMAP_INVALID_DATA_LENGTH (BIT6) -#define CFG_CONFIG_RMAP_INVALID_RMW_DATA_LENGTH (BIT7) -#define CFG_CONFIG_RMAP_INVALID_DESTINATION_ADDRESS (BIT8) -#define CFG_CONFIG_RMAP_EARLY_EOP (BIT9) -#define CFG_CONFIG_RMAP_LATE_EOP (BIT10) -#define CFG_CONFIG_RMAP_EARLY_EEP (BIT11) -#define CFG_CONFIG_RMAP_LATE_EEP (BIT12) -#define CFG_CONFIG_RMAP_VERIFY_BUFFER_OVERRUN_ERROR (BIT13) -#define CFG_CONFIG_RMAP_INVALID_REGISTER_ADDRESS (BIT14) -#define CFG_CONFIG_RMAP_UNSUPPORTED_PROTOCOL_ERROR (BIT15) -#define CFG_CONFIG_RMAP_SOURCE_LOGICAL_ADDRESS_ERROR (BIT16) -#define CFG_CONFIG_RMAP_SOURCE_PATH_ADDRESS_ERROR (BIT17) -#define CFG_CONFIG_RMAP_CARGO_TOO_LARGE (BIT18) -#define CFG_CONFIG_RMAP_UNUSED_COMMAND_OR_PACKET_TYPE (BIT19) -#define CFG_CONFIG_RMAP_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | \ - BIT5 | BIT6 | BIT7 | BIT8 | BIT9 | \ - BIT10 | BIT11 | BIT12 | BIT13 | \ - BIT14 | BIT15 | BIT16 | BIT17 | \ - BIT18 | BIT19) - -/* External Port errors */ -#define CFG_EXTERNAL_NO_ERRORS (0) -#define CFG_EXTERNAL_ERROR_ACTIVE (BIT0) -#define CFG_EXTERNAL_PACKET_ADDRESS_ERROR (BIT1) -#define CFG_EXTERNAL_PORT_TIMEOUT_ERROR (BIT2) -#define CFG_EXTERNAL_INPUT_BUFFER_EMPTY_ERROR (BIT3) -#define CFG_EXTERNAL_INPUT_BUFFER_FULL_ERROR (BIT4) -#define CFG_EXTERNAL_OUTPUT_BUFFER_EMPTY_ERROR (BIT5) -#define CFG_EXTERNAL_OUTPUT_BUFFER_FULL_ERROR (BIT6) -#define CFG_EXTERNAL_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | \ - BIT4 | BIT5 | BIT6) - -/* SpaceWire Port interface state */ -#define CFG_SPACEWIRE_ERROR_RESET (0) -#define CFG_SPACEWIRE_ERROR_WAIT (BIT0) -#define CFG_SPACEWIRE_READY (BIT1) -#define CFG_SPACEWIRE_STARTED (BIT1 | BIT0) -#define CFG_SPACEWIRE_CONNECTING (BIT2) -#define CFG_SPACEWIRE_RUN (BIT2 | BIT0) - -/* Port type */ -#define CFG_CONFIGURATION_PORT (0) -#define CFG_SPACEWIRE_SERIAL_PORT (BIT0) -#define CFG_SPACEWIRE_EXTERNAL_PORT (BIT1) - -/* SpaceWire Port control bits */ -#define CFG_SPACEWIRE_INTERFACE_STATE_START (8) -#define CFG_SPACEWIRE_INTERFACE_STATE (BIT8 | BIT9 | BIT10) -#define CFG_SPACEWIRE_RUNNING (BIT11) -#define CFG_SPACEWIRE_AUTOSTART (BIT12) -#define CFG_SPACEWIRE_START (BIT13) -#define CFG_SPACEWIRE_DISABLE (BIT14) -#define CFG_SPACEWIRE_TRISTATE (BIT15) -#define CFG_SPACEWIRE_RATE (BIT16 | BIT17 | BIT18 | \ - BIT19 | BIT20 | BIT21 | BIT22) -#define CFG_SPACEWIRE_RATE_START (16) - -/* Bits in the GAR Table */ -#define CFG_GAR_OUTPUT_PORTS_START (1) -#define CFG_GAR_OUTPUT_PORTS (BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | \ - BIT6 | BIT7 | BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | BIT13 | BIT14 | \ - BIT15 | BIT16 | BIT17 | BIT18 | BIT19 | BIT20 | BIT21 | BIT22 | \ - BIT23 | BIT24 | BIT25 | BIT26 | BIT27 | BIT28) -#define CFG_GAR_DEL_HEAD (BIT29) -#define CFG_GAR_PRIORITY (BIT30) -#define CFG_GAR_INVALID_ADDR (BIT31) - -/* Bits in the router control register */ -#define CFG_RC_TIMEOUT_ENABLE_START (0) -#define CFG_RC_TIMEOUT_ENABLE (BIT0) -#define CFG_RC_TIMEOUT_VALUE_START (1) -#define CFG_RC_TIMEOUT_VALUE (BIT1 | BIT2 | BIT3) -#define CFG_RC_DISABLE_ON_SILENCE (BIT4) -#define CFG_RC_DISABLE_ON_SILENCE_START (4) -#define CFG_RC_START_ON_REQUEST (BIT5) -#define CFG_RC_START_ON_REQUEST_START (5) -#define CFG_RC_SELF_ADDRESSING (BIT6) -#define CFG_RC_SELF_ADDRESSING_START (6) -#define CFG_RC_INTERFACE (BIT7) -#define CFG_RC_INTERFACE_START (7) -#define CFG_RC_INTERFACE_IDENT (BIT8) -#define CFG_RC_INTERFACE_IDENT_START (8) - -/* The bits shared by all ports */ -#define CFG_PORT_CONNECTION (BIT24 | BIT25 | BIT26 | BIT27 | BIT28) -#define CFG_PORT_CONNECTION_START (24) -#define CFG_PORT_TYPE (BIT29 | BIT30 | BIT31) -#define CFG_PORT_TYPE_START (29) - -/* Network discovery register values */ -#define CFG_NETD_TYPE (BIT0 | BIT1 | BIT2 | BIT3) -#define CFG_NETD_TYPE_START (0) -#define CFG_NETD_RETURN_PORT (BIT4 | BIT5 | BIT6 | BIT7) -#define CFG_NETD_RETURN_PORT_START (4) -#define CFG_NETD_RUNNING_PORTS (BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | \ - BIT13 | BIT14 | BIT15 | BIT16 | BIT17 | BIT18 | BIT19 | BIT20 | \ - BIT21 | BIT22 | BIT23 | BIT24 | BIT25 | BIT26 | BIT27 | BIT28 | \ - BIT29 | BIT30 | BIT31) -#define CFG_NETD_RUNNING_PORTS_START (8) - -/* Values in the ID register */ -#define CFG_ID_VERSION (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | \ - BIT5 | BIT6 | BIT7) -#define CFG_ID_VERSION_START (0) -#define CFG_ID_CHIP (BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | \ - BIT13 | BIT14 | BIT15) -#define CFG_ID_CHIP_START (8) -#define CFG_ID_MANUFACTURER (BIT16 | BIT17 | BIT18 | BIT19 | \ - BIT20 | BIT21 | BIT22 | BIT23) -#define CFG_ID_MANUFACTURER_START (16) - -/* Values in the Time-Code register */ -#define CFG_TC_VALUE (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | \ - BIT5) -#define CFG_TC_VALUE_START (0) -#define CFG_TC_FLAGS (BIT6 | BIT7) -#define CFG_TC_FLAGS_START (6) - -/* Values for the Router Base Clock Select */ -#define CFG_RTR_CLK_100_MBITS (0) -#define CFG_RTR_CLK_200_MBITS (BIT0) - -/* Values for the Brick Base Clock */ -#define CFG_BRK_CLK_100_MHZ (0) -#define CFG_BRK_CLK_120_MHZ (BIT0) -#define CFG_BRK_CLK_140_MHZ (BIT1) -#define CFG_BRK_CLK_160_MHZ (BIT0 | BIT1) -#define CFG_BRK_CLK_180_MHZ (BIT2) -#define CFG_BRK_CLK_200_MHZ (BIT2 | BIT0) - -/* Values for the Brick Base Divider */ -#define CFG_BRK_DVDR_1 (0) -#define CFG_BRK_DVDR_2 (BIT0) -#define CFG_BRK_DVDR_4 (BIT1) - -/* Values in the Tx register */ -#define CFG_TX_BRICK_2MBITS (BIT27) -#define CFG_TX_BRICK_2MBITS_START (27) - -/* Values in the Precision Transmit Rate register */ -#define CFG_PT_ENABLE (BIT16) -#define CFG_PT_ENABLE_START (16) -#define CFG_PT_READY (BIT17) -#define CFG_PT_READY_START (17) -#define CFG_PT_IN_USE (BIT20) -#define CFG_PT_IN_USE_START (20) -#define CFG_PT_RATE_BITS (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | \ - BIT7 | BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | \ - BIT13 | BIT14 | BIT15 ) -#define CFG_PT_DIVIDER_CONSTANT ((double)(pow((double)2, (double)48) / (double)600)) - -/* Chip ID values */ -#define CFG_CID_ROUTER_ASIC (0) /* SpaceWire Router ASIC and IP */ -#define CFG_CID_ROUTER_USB (1) /* Original SpaceWire Router-USB */ -#define CFG_CID_USB_BRICK (2) /* SpaceWire-USB Brick */ -#define CFG_CID_FEIC (4) /* The FEIC chip */ -#define CFG_CID_ROUTER_USB_2 (5) /* New SpaceWire Router-USB */ -#define CFG_CID_PCI_MK2 (7) /* SpaceWire PCI Mk2 */ -#define CFG_CID_PCI_EXPRESS (8) /* SpaceWire PCI Express */ -#define CFG_CID_RTC (9) /* RTC Development Unit */ -#define CFG_CID_CONFORMANCE_TESTER (10) /* SpaceWire Conformance Tester */ -#define CFG_CID_EGSE (11) /* SpaceWire EGSE */ -#define CFG_CID_STAR_FIRE (12) /* STAR Fire */ -#define CFG_CID_WBS_MK2 (14) /* WBS Mk2 */ - - -/* Addresses which can be read from and written to */ -#define CFG_EXTENDED_ADDRESS (0x100) -#define CFG_ADDR_NET_DISC (CFG_EXTENDED_ADDRESS + 0) -#define CFG_ADDR_NET_DISC_IDENT (CFG_EXTENDED_ADDRESS + 1) -#define CFG_ADDR_ROUTER_CONTROL (CFG_EXTENDED_ADDRESS + 2) -#define CFG_ADDR_ERRORS (CFG_EXTENDED_ADDRESS + 3) -#define CFG_ADDR_TIMECODE (CFG_EXTENDED_ADDRESS + 4) -#define CFG_ADDR_IDS (CFG_EXTENDED_ADDRESS + 5) -#define CFG_ADDR_GP (CFG_EXTENDED_ADDRESS + 6) -#define CFG_ADDR_TICK (CFG_EXTENDED_ADDRESS + 7) -#define CFG_ADDR_TX_RATE (CFG_EXTENDED_ADDRESS + 8) -#define CFG_ADDR_PRECISION_1 (CFG_EXTENDED_ADDRESS + 0xC) -#define CFG_ADDR_PRECISION_2 (CFG_EXTENDED_ADDRESS + 0xD) - - -/* Exported functions */ - -/* Version information */ -ROUTER_CONFIG_LIBRARY double ROUTER_CONFIG_CC CFGSpaceWire_GetAPIVersion(void); - -/* Configuration address stack manipulation functions */ -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_StackClear(void); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_AddrStackPush( - U8 dwAddress); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_AddrStackPop(void); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RetAddrStackPush( - U8 dwAddress); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_RetAddrStackPop(void); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_SetProtocolByte( - U8 ProtocolByte); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_GetProtocolByte(void); - -/* RMAP functions */ -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_EnableRMAP( - char useRMAP); -ROUTER_CONFIG_LIBRARY char ROUTER_CONFIG_CC CFGSpaceWire_IsRMAPEnabled(); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_SetRMAPDestinationKey( - U8 destinationKey); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_GetRMAPDestinationKey(); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_SetRMAPAlignment( - U8 alignment); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_GetRMAPAlignment(); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_EnableReceiveOnAllPorts(char enable); -ROUTER_CONFIG_LIBRARY char ROUTER_CONFIG_CC - CFGSpaceWire_IsReceiveOnAllPortsEnabled(); - -/* Ignoring replies to write commands functions */ -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_IgnoreWriteReplies( - char ignore); -ROUTER_CONFIG_LIBRARY char ROUTER_CONFIG_CC - CFGSpaceWire_AreWriteRepliesIgnored(); - -/* Configuration address read and write functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_ReadAddress( - star_device_handle hDevice, U32 dwAddress, U32 *dwData); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_WriteAddress( - star_device_handle hDevice, U32 dwAddress, U32 dwData); - -/* Router link functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_StartLink( - star_device_handle hDevice, U32 dwLinkNum); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_StopLink( - star_device_handle hDevice, U32 dwLinkNum); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_TriStateLink( - star_device_handle hDevice, U32 dwLinkNum, char bEnabled); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetLinkSpeed( - star_device_handle hDevice, U32 dwLinkNum, U32 dwSpeed); - -/* Routing table functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetRoutingTableEntry( - star_device_handle hDevice, U32 nLogicalAddress, U32 *dwRoutingTableEntry); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetRoutingTableEntry( - star_device_handle hDevice, U32 nLogicalAddress, U32 dwRoutingTableEntry); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_ClearRoutingTableEntry( - star_device_handle hDevice, U32 nLogicalAddress); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTIsEnabled( - U32 dwRoutingTableEntry, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTIsDelHead( - U32 dwRoutingTableEntry, char *bDelHead); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTIsPriority( - U32 dwRoutingTableEntry, char *bPriority); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTOutputPorts( - U32 dwRoutingTableEntry, U32 *dwOutputPorts); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTGetOutputPorts( - U32 dwRoutingTableEntry, U32 *dwOutputPorts); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_RTBuildRoutingTableEntry(U32 *dwRoutingTableEntry, - U32 dwOutputPorts, char bDelHead, char bPriority); - -/* Link status control functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetLinkStatusControl( - star_device_handle hDevice, U32 dwLinkNum, U32 *dwStatusControl); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetLinkStatusControl( - star_device_handle hDevice, U32 dwLinkNum, U32 dwStatusControl); - -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSErrorStatus( - U32 dwStatusControl, U32 *dwErrorStatus); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSConfigErrorStatus( - U32 dwStatusControl, U32 *dwErrorStatus); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSExternalErrorStatus( - U32 dwStatusControl, U32 *dwErrorStatus); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSLinkState( - U32 dwStatusControl, U32 *dwLinkStatus); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsLinkRunning( - U32 dwStatusControl, char *isLinkRunning); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsAutoStart( - U32 dwStatusControl, char *isAutoStart); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSEnableAutoStart( - U32 *dwStatusControl, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsStart( - U32 dwStatusControl, char *isStart); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSEnableStart( - U32 *dwStatusControl, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsDisabled( - U32 dwStatusControl, char *isDisabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSEnableDisabled( - U32 *dwStatusControl, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsTristate( - U32 dwStatusControl, char *isTristate); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSEnableTristate( - U32 *dwStatusControl, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSOperatingSpeed( - U32 dwStatusControl, U32 *dwOperatingSpeed); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSSetOperatingSpeed( - U32 *dwStatusControl, U32 dwOperatingSpeed); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSOutputPortConnection( - U32 dwStatusControl, U32 *dwOutputPortConnection); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSPortType( - U32 dwStatusControl, U32 *dwPortType); - -/* Network discovery information retreival */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetNetworkDiscoveryValue(star_device_handle hDevice, - U32 *dwNetworkDiscovery); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_NDDeviceType( - U32 dwNetDisc, U32 *dwDeviceType); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_NDReturnPort( - U32 dwNetDisc, U32 *dwReturnPort); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_NDRunningLinks( - U32 dwNetDisc, U32 *dwRunningLinks); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_NDNumberLinks( - U32 dwNetDisc, U32 *dwNumberLinks); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetNumberLinks( - star_device_handle hDevice, U32 *dwNumLinks); - -/* Router identity register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetNetworkID( - star_device_handle hDevice, U32 dwNetworkID); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetNetworkID( - star_device_handle hDevice, U32 *dwNetworkID); - -/* Router control register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetPortTimeout( - star_device_handle hDevice, char bEnabled, - CFG_SPACEWIRE_PORT_TIMEOUT timeout); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetPortTimeout( - star_device_handle hDevice, char *bEnabled, - CFG_SPACEWIRE_PORT_TIMEOUT *timeout); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_IsPortTimeoutEnabled( - star_device_handle hDevice, char *bEnabled); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetAsInterface( - star_device_handle hDevice, char bEnabled, char bAddIdentifier); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetRouterControlRegister(star_device_handle hDevice, - U32 *dwRouterCtrlReg); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetRouterControlRegister(star_device_handle hDevice, - U32 dwRouterCtrlReg); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetTimeoutEnabled( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetTimeoutEnabled( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetTimeoutSelection( - U32 dwRouterCtrlReg, U32 *dwSelection); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetTimeoutSelection( - U32 *dwRouterCtrlReg, U32 dwSelection); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetDisableOnSilence( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetDisableOnSilence( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetStartOnRequest( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetStartOnRequest( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetSelfAddressing( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetSelfAddressing( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetInterface( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetInterface( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_RCGetInterfaceIdentifier(U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_RCSetInterfaceIdentifier(U32 *dwRouterCtrlReg, char bEnabled); - -/* Error active register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetErrorStatus( - star_device_handle hDevice, U32 *dwErrorStatus); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_ClearErrorStatus( - star_device_handle hDevice, U32 dwPorts); - -/* Time-Code register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetTimecodeRegister( - star_device_handle hDevice, U32 *dwTimecodeReg); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_TCGetValue( - U32 dwTimecodeReg, U32 *dwValue); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_TCGetFlags( - U32 dwTimecodeReg, U32 *dwValue); - -/* Manufacturer and Chip ID register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetIDRegister( - star_device_handle hDevice, U32 *dwIDs); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_IDGetManufacturer( - U32 dwIDs, U32 *dwManufacturerID); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_IDGetChipID(U32 dwIDs, - U32 *dwChipID); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_IDGetVersion(U32 dwIDs, - U32 *dwVersion); - -/* General purpose register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetGeneralPurposeStatus( - star_device_handle hDevice, U32 *dwGeneralPurposeStatus); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetGeneralPurposeStatus( - star_device_handle hDevice, U32 dwGeneralPurposeStatus); - -/* Tick enable register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetTickEnableStatus( - star_device_handle hDevice, U32 *dwTickEnableStatus); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetTickEnableStatus( - star_device_handle hDevice, U32 dwTickEnableStatus); - - -/* Base Transmit Rate functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetRouterBaseTransmitRate(star_device_handle hDevice, - U32 dwBaseClkSel); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetRouterBaseTransmitRate(star_device_handle hDevice, - U32 *dwBaseClkSel); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetBrickBaseTransmitRate(star_device_handle hDevice, - U32 dwBaseClk, U32 dwBaseDvdr, U32 dwEnableClk); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetBrickBaseTransmitRate(star_device_handle hDevice, - U32 *dwBaseClk, U32 *dwBaseDvdr, U32 *dwEnableClk); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetPrecisionTransmitRegister(star_device_handle hDevice, - U32 *dwPrecisionTransmit); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetPrecisionTransmitRegister(star_device_handle hDevice, - U32 dwPrecisionTransmit); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_PTGetPrecisionTransmitEnabled(U32 dwPrecisionTransmit, - char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_PTSetPrecisionTransmitEnabled(U32 *dwPrecisionTransmit, - char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_PTGetPrecisionTransmitReady(U32 dwPrecisionTransmit, - char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_PTGetPrecisionTransmitInUse(U32 dwPrecisionTransmit, - char *bEnabled); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetPrecisionTransmitRate(star_device_handle hDevice, - double *PrecisionTransmitRate); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetPrecisionTransmitRate(star_device_handle hDevice, - double PrecisionTransmitRate); - - - -#ifdef __cplusplus -} -#endif - - - -#endif /* SPACEWIRE_ROUTER_LIBRARY */ - - - diff --git a/spw_usb_driver_v2.62/inc/spw_usb_api.h b/spw_usb_driver_v2.62/inc/spw_usb_api.h deleted file mode 100755 --- a/spw_usb_driver_v2.62/inc/spw_usb_api.h +++ /dev/null @@ -1,330 +0,0 @@ -/******************************************************************************/ -/* */ -/* spw_usb_api.h */ -/* */ -/* Declaration of the functions provided by the SpaceWire USB API Library */ -/* for the SpaceWire USB devices. */ -/* */ -/* Version 2.62, March 11th 2013 */ -/* */ -/* Version 2.62, 11/03/13 */ -/* ====================== */ -/* Fixed bug dealing with received traffic which is not a packet. */ -/* */ -/* Version 2.61, 21/09/12 */ -/* ====================== */ -/* Added support for STAR Fire and WBS II. */ -/* */ -/* Version 2.60, 04/01/12 */ -/* ====================== */ -/* Added support for EGSE and SPLT. */ -/* */ -/* Version 2.59, 15/08/11 */ -/* ====================== */ -/* Added support for RTC. */ -/* */ -/* Version 2.5, 12/10/10 */ -/* ===================== */ -/* Added support for Link Analyser Mk2. */ -/* */ -/* Version 1.5, 12/03/10 */ -/* ===================== */ -/* Added GetFirmwareVersionExtended and restored GetFirmwareVersion to */ -/* its original form. */ -/* */ -/* Version 1.4, 03/03/10 */ -/* ===================== */ -/* Fixed bug waiting on a receive to complete. */ -/* Added support for multiple send channels. */ -/* Added functions to get serial number and product ID. */ -/* */ -/* Version 1.3, 26/2/09 */ -/* ==================== */ -/* Updated the calling convention used in the function declaration to */ -/* __stdcall on Windows. */ -/* */ -/* Version 1.2, 21/1/09 */ -/* ==================== */ -/* Updated to compile on both Windows and Linux. */ -/* */ -/* Version 1.1, 8/10/06 */ -/* ==================== */ -/* Linux release. */ -/* */ -/* Version 1.0, 24/4/06 */ -/* ==================== */ -/* Initial version. */ -/* */ -/* Copyright (2013), STAR-Dundee Ltd., */ -/* STAR House, */ -/* 166 Nethergate, */ -/* Dundee, DD1 4EE, */ -/* Scotland, UK. */ -/* e-mail: support@star-dundee.com */ -/* */ -/******************************************************************************/ - - - -#ifndef SPACEWIRE_USB_API_H -#define SPACEWIRE_USB_API_H - - - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#include "spacewire_usb.h" - - - -#if defined(_WIN32) || defined(_WIN64) - - -/* Windows specifc functions and macros */ - -#ifdef SPACEWIREUSBAPI_EXPORTS -#define SPACEWIREUSB_API __declspec(dllexport) -#else -#define SPACEWIREUSB_API __declspec(dllimport) -#endif - -#ifdef _WIN64 -#define SPW_USB_API_CC -#else -#define SPW_USB_API_CC __stdcall -#endif /* WIN64 */ - - -#include "windows.h" - - -#else /* _WIN32 */ - - -/* Linux specific functions and macros */ - -#define SPACEWIREUSB_API -#define SPW_USB_API_CC - - -#endif /* _WIN32 */ - - - -/* Functions provided by the API */ - -/* General functions */ -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_Open( - star_device_handle *phDevice, int nDeviceNum); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_Close( - star_device_handle hDevice); -SPACEWIREUSB_API U8 SPW_USB_API_CC USBSpaceWire_CountDevices(); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_ListDevices(); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetDriverVersion(); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetIFVersion(); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetAPIVersion(); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetTimeout( - star_device_handle hDevice, double timeout); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetTimeout( - star_device_handle hDevice); -SPACEWIREUSB_API U8 SPW_USB_API_CC USBSpaceWire_GetSpaceWireAddress( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetSpaceWireAddress( - star_device_handle hDevice, U8 address); -SPACEWIREUSB_API U16 SPW_USB_API_CC USBSpaceWire_GetFirmwareVersion( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_GetFirmwareVersionExtended( - star_device_handle hDevice, SPACEWIRE_FIRMWARE_VERSION *pVersion); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_ClearEndpoints( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_ResetDevice( - star_device_handle hDevice); -SPACEWIREUSB_API SPACEWIRE_DEVICE_TYPE SPW_USB_API_CC - USBSpaceWire_GetDeviceType(star_device_handle hDevice); -SPACEWIREUSB_API SPACEWIRE_DEVICE_TYPE SPW_USB_API_CC - USBSpaceWire_GetUnopenedDeviceType(int deviceNum); -SPACEWIREUSB_API U16 SPW_USB_API_CC USBSpaceWire_GetDeviceProductID( - star_device_handle hDevice); -SPACEWIREUSB_API U16 SPW_USB_API_CC USBSpaceWire_GetUnopenedDeviceProductID( - int deviceNum); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableHeaderMode( - star_device_handle hDevice, char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsHeaderModeEnabled( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableNetworkMode( - star_device_handle hDevice, char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsNetworkModeEnabled( - star_device_handle hDevice); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetUSBVersion( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_GetAPIString(char *str); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_GetSerialNumber( - star_device_handle hDevice, U8 pSerialNumber[11]); - -/* Receive functions */ -SPACEWIREUSB_API unsigned long SPW_USB_API_CC - USBSpaceWire_GetDriverDroppedPackets(star_device_handle hDevice); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC - USBSpaceWire_GetDriverDroppedBytes(star_device_handle hDevice); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC USBSpaceWire_GetDroppedPackets( - star_device_handle hDevice); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC USBSpaceWire_GetDroppedBytes( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_RegisterReceiveOnPort( - star_device_handle hDevice, U8 port); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_UnregisterReceiveOnPort( - star_device_handle hDevice, U8 port); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_RegisterReceiveOnAllPorts( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_UnregisterReceiveOnAllPorts( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_ReadPackets( - star_device_handle hDevice, void *pBuffer, U32 nBufferSize, - U32 nPacketNum, char bWait, PUSB_SPACEWIRE_PACKET_PROPERTIES properties, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeRead( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeAllReads( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_GetReadStatus( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_WaitOnReadCompleting(star_device_handle hDevice, - USB_SPACEWIRE_ID identifier, char bWaitIndefinitely); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableReadThrottling( - star_device_handle hDevice, char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsReadThrottling( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetDriverReadBufferSize( - star_device_handle hDevice, unsigned long nBufferSize); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC - USBSpaceWire_GetDriverReadBufferSize(star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetDriverReadStructsNum( - star_device_handle hDevice, unsigned long nStructsNum); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC - USBSpaceWire_GetDriverReadStructsNum(star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_WaitOnReadPacketAvailable( - star_device_handle hDevice, double timeout); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_GetReadLength( - PUSB_SPACEWIRE_PACKET_PROPERTIES pProperties, U32 nPacketNum); -SPACEWIREUSB_API USB_SPACEWIRE_EOP_TYPE SPW_USB_API_CC - USBSpaceWire_GetReadEOPStatus(PUSB_SPACEWIRE_PACKET_PROPERTIES pProperties, - U32 nPacketNum); -SPACEWIREUSB_API SPACEWIRE_TRAFFIC_TYPE SPW_USB_API_CC - USBSpaceWire_GetReadTrafficType( - PUSB_SPACEWIRE_PACKET_PROPERTIES pProperties, U32 nPacketNum); - -/* Send functions */ -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_GetNumberOfSendChannels( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendPacketTo( - star_device_handle hDevice, void *pBuffer, U32 nBufferSize, - U8 *pAddress, U32 nAddressLen, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendPacketToOverChannel(star_device_handle hDevice, U8 channel, - void *pBuffer, U32 nBufferSize, U8 *pAddress, U32 nAddressLen, - char bWait, USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketsTo(star_device_handle hDevice, - void *pBuffer, U32 nPacketSize, U32 nBufferSize, U8 *pAddress, - U32 nAddressLen, char bWait, USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketsToOverChannel(star_device_handle hDevice, - U8 channel, void *pBuffer, U32 nPacketSize, U32 nBufferSize, - U8 *pAddress, U32 nAddressLen, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketLengthsTo(star_device_handle hDevice, - void **pBuffers, U32 *pPacketSizes, U32 nNumberOfPackets, U8 *pAddress, - U32 nAddressLen, char bWait, USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketLengthsToOverChannel( - star_device_handle hDevice, U8 channel, void **pBuffers, - U32 *pPacketSizes, U32 nNumberOfPackets, U8 *pAddress, U32 nAddressLen, - char bWait, USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendPacket( - star_device_handle hDevice, void *pBuffer, U32 nBufferSize, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendPacketOverChannel(star_device_handle hDevice, U8 channel, - void *pBuffer, U32 nBufferSize, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePackets(star_device_handle hDevice, void *pBuffer, - U32 nPacketSize, U32 nBufferSize, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketsOverChannel(star_device_handle hDevice, - U8 channel, void *pBuffer, U32 nPacketSize, U32 nBufferSize, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketLengths(star_device_handle hDevice, - void **pBuffers, U32 *pPacketSizes, U32 nNumberOfPackets, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketLengthsOverChannel( - star_device_handle hDevice, U8 channel, void **pBuffers, - U32 *pPacketSizes, U32 nNumberOfPackets, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeSend( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeAllSends( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_GetSendStatus( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_WaitOnSendCompleting(star_device_handle hDevice, - USB_SPACEWIRE_ID identifier, char bWaitIndefinitely); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_GetSendSize( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetDriverSendBufferSize( - star_device_handle hDevice, U32 nBufferSize); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_GetDriverSendBufferSize( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableSendEEPs( - star_device_handle hDevice, char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsSendEEPsEnabled( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_TunnelSendTraffic(star_device_handle hDevice, - SPACEWIRE_TRAFFIC_TYPE type, void *pBuffer, U32 nBufferSize, - USB_SPACEWIRE_EOP_TYPE eop, U8 port, char bWait, - USB_SPACEWIRE_ID *identifier); - -/* Time-code functions */ -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_PerformTickIn( - star_device_handle hDevice, U8 timein); -SPACEWIREUSB_API char SPW_USB_API_CC - USBSpaceWire_TC_EnableExternalTimecodeSelection(star_device_handle hDevice, - char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_Reset( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_EnableAutoTickIn( - star_device_handle hDevice, char enableAutoTickIns, char enableAllPorts); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_SetAutoTickInFrequency( - star_device_handle hDevice, U32 frequency); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_StartReadingTimecodes( - star_device_handle hDevice, void *arg, void (*callbackfunc)( - star_device_handle hDevice, U8 timecode, void *arg)); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_TC_StopReadingTimecodes( - star_device_handle hDevice); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_TC_GetClockFrequency( - star_device_handle hDevice); - - - -#ifdef __cplusplus -} -#endif - - - -#endif /* SPACEWIRE_USB_API_H */ - - diff --git a/spw_usb_driver_v2.62/inc/star-dundee_types.h b/spw_usb_driver_v2.62/inc/star-dundee_types.h deleted file mode 100644 --- a/spw_usb_driver_v2.62/inc/star-dundee_types.h +++ /dev/null @@ -1,161 +0,0 @@ -/** - * \file star-dundee_types.h - * \brief Definitions of STAR-Dundee commonly used types. - * \author Stuart Mills\n - * STAR-Dundee\n - * c/o School of Computing\n - * University of Dundee\n - * Dundee, DD1 4HN\n - * Scotland, UK\n - * e-mail: support@star-dundee.com - * - * This file contains the definitions of common types used by STAR-Dundee - * software drivers and APIs. - * - * IMPORTANT NOTE: - * \note If you are experiencing compilation errors indicating that - * U8 is already defined, for example, please add the following - * line to your code prior to including this file:\n - * \#define NO_STAR_TYPES\n - * Alternatively you can compile your code with a flag of - * -DNO_STAR_TYPES.\n - * - * \version 1.1 - August 22nd 2011\n - * Removed star_device_handle, not required by STAR-System.\n\n - * - * \version 1.0 - March 22nd 2007\n - * Initial version.\n\n - * - * Copyright © 2009 STAR-Dundee Ltd - */ - - -/** - * \defgroup STARDundeeTypes STAR-Dundee Types - * This section contains the definitions of types used in STAR-Dundee software - * drivers and APIs. - */ - -/** - * \def TRUE - * \ingroup STARDundeeTypes - * A value that can be used to represent the boolean value of true. - */ - -/** - * \def FALSE - * \ingroup STARDundeeTypes - * A value that can be used to represent the boolean value of false. - */ - -/** - * \typedef U8 - * \ingroup STARDundeeTypes - * A type that can be used to represent an unsigned 8-bit number. - */ - -/** - * \typedef U16 - * \ingroup STARDundeeTypes - * A type that can be used to represent an unsigned 16-bit number. - */ - -/** - * \typedef U32 - * \ingroup STARDundeeTypes - * A type that can be used to represent an unsigned 32-bit number. - */ - -/** - * \typedef REGISTER - * \ingroup STARDundeeTypes - * A type that can be used to represent a 4-byte register. - */ - - -#ifndef STAR_DUNDEE_TYPES -#define STAR_DUNDEE_TYPES - -/* Define TRUE and FALSE */ -#ifndef TRUE - #define TRUE 1 -#endif -#ifndef FALSE - #define FALSE 0 -#endif - -#ifndef NO_STAR_TYPES - -#if (defined(__linux__) || defined(LINUX) || defined(__LINUX__) || \ - defined(__CYGWIN__)) && defined(__KERNEL__) - - #include - - /* Define U8, U16 and U32 in the Linux kernel */ - #ifndef U8 - typedef u8 U8; - #endif - #ifndef U16 - typedef u16 U16; - #endif - #ifndef U32 - typedef u32 U32; - #endif - -#else - - #include - - /* Define U8 */ - #ifndef U8 - #if (UCHAR_MAX == 0xff) - typedef unsigned char U8; - #elif (UINT_MAX == 0xff) - typedef unsigned int U8; - #else - #error "No valid definition of U8 available" - #endif - #endif - - /* Define U16 */ - #ifndef U16 - #if (USHRT_MAX == 0xffff) - typedef unsigned short U16; - #elif (UINT_MAX == 0xffff) - typedef unsigned int U16; - #elif (UCHAR_MAX == 0xffff) - typedef unsigned char U16; - #else - #error "No valid definition of U16 available" - #endif - #endif - - /* Define U32 */ - #ifndef U32 - #if (UINT_MAX == 0xffffffff) - typedef unsigned int U32; - #elif (ULONG_MAX == 0xffffffff) - typedef unsigned long U32; - #elif (USHRT_MAX == 0xffffffff) - typedef unsigned short U32; - #elif (UCHAR_MAX == 0xffffffff) - typedef unsigned char U32; - #else - #error "No valid definition of U32 available" - #endif - #endif - -#endif /* Linux kernel test */ - - -#endif /* NO_STAR_TYPES */ - -/* Define REGISTER */ -#ifndef REGISTER - typedef U32 REGISTER; -#endif - - -#endif /* STAR_DUNDEE_TYPES */ - - diff --git a/spw_usb_driver_v2.62/inc/star_dundee_types.h b/spw_usb_driver_v2.62/inc/star_dundee_types.h deleted file mode 100755 --- a/spw_usb_driver_v2.62/inc/star_dundee_types.h +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************/ -/* */ -/* star_dundee_types.h */ -/* */ -/* This file contains the definitions of common types used by STAR-Dundee */ -/* drivers and APIs. */ -/* */ -/* IMPORTANT NOTE: If you are experiencing compilation errors indicating */ -/* that U8 is already defined, for example, please add the */ -/* following line to your code prior to including this */ -/* file: */ -/* #define NO_STAR_TYPES */ -/* Alternatively you can compile your code with a flag of */ -/* -DNO_STAR_TYPES. */ -/* */ -/* Version 1.0, March 22nd 2007 */ -/* */ -/* Version 1.0 - March 22nd 2007 */ -/* =========== */ -/* Initial version. */ -/* */ -/* Copyright (2012), STAR-Dundee Ltd., */ -/* STAR House, */ -/* 166 Nethergate, */ -/* Dundee, DD1 4EE, */ -/* Scotland, UK. */ -/* e-mail: support@star-dundee.com */ -/* */ -/******************************************************************************/ - - - -#ifndef STAR_DUNDEE_TYPES -#define STAR_DUNDEE_TYPES - - -typedef void *star_device_handle; - - -#ifndef NO_STAR_TYPES - -#if (defined(__linux__) || defined(LINUX) || defined(__LINUX__)) && \ - defined(__KERNEL__) - - #include - - /* Define U8, U16 and U32 in the Linux kernel */ - typedef u8 U8; - typedef u16 U16; - typedef u32 U32; - -#else - - #include - - /* Define U8 */ - #if (UCHAR_MAX == 0xff) - typedef unsigned char U8; - #elif (UINT_MAX == 0xff) - typedef unsigned int U8; - #else - #error "No valid definition of U8 available" - #endif - - /* Define U16 */ - #if (USHRT_MAX == 0xffff) - typedef unsigned short U16; - #elif (UINT_MAX == 0xffff) - typedef unsigned int U16; - #elif (UCHAR_MAX == 0xffff) - typedef unsigned char U16; - #else - #error "No valid definition of U16 available" - #endif - - /* Define U32 */ - #if (UINT_MAX == 0xffffffff) - typedef unsigned int U32; - #elif (ULONG_MAX == 0xffffffff) - typedef unsigned long U32; - #elif (USHRT_MAX == 0xffffffff) - typedef unsigned short U32; - #elif (UCHAR_MAX == 0xffffffff) - typedef unsigned char U32; - #else - #error "No valid definition of U32 available" - #endif - -#endif /* Linux kernel test */ - - -#endif /* NO_STAR_TYPES */ - - -#endif /* STAR_DUNDEE_TYPES */ - - diff --git a/spw_usb_driver_v2.62/lib/i386/spacewire_cuba_software b/spw_usb_driver_v2.62/lib/i386/spacewire_cuba_software deleted file mode 100755 index b688714265809f1a96871a0774c9e91bf18f3075..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 GIT binary patch literal 0 Hc$@IMPORTANT NOTE: - * \note If you are experiencing compilation errors indicating that - * U8 is already defined, for example, please add the following - * line to your code prior to including this file:\n - * \#define NO_STAR_TYPES\n - * Alternatively you can compile your code with a flag of - * -DNO_STAR_TYPES.\n - * (Copied from star_dundee_types.h) - * - * \version 3.2 - June 19th 2012\n - * Fixed bug when checking a write command packet or read reply packet - * has a data length of 0. - * Updates to documentation. - * - * \version 3.1 - February 10th 2012\n - * Minor updates to packet types to avoid errors in static - * analysers.\n\n - * - * \version 3.0 - October 14th 2011\n - * Updated linking process on Windows.\n - * Updated library file name.\n\n - * - * \version 2.1 - August 22nd 2011\n - * Made minor improvements to the internal structure.\n\n - * - * \version 2.0 - October 28th 2009\n - * Changed internal architecture to minimise memory allocations.\n - * Restored __stdcall calling convention on Windows.\n - * Updated names to be consistent with terminology in latest RMAP - * standard.\n - * Added functions to calculate the length of different packet types - * and to fill a buffer with specific packets.\n\n - * - * \version 1.9 - July 29th 2009\n - * Fixed problem with byte ordering in return value of - * RMAP_GetAddress.\n - * Fixed bug when creating read and write reply packets, with a packet - * structure provided.\n\n - * - * \version 1.8 - February 26th 2009\n - * Updated the calling convention used in the function declaration to - * __stdcall on Windows.\n\n - * - * \version 1.7 - November 20th 2008\n - * Fixed problem with naming of RMAP_IsCRCValid in header file.\n - * Added function to calculate a CRC starting from a CRC seed - * value.\n\n - * - * \version 1.6 - October 29th 2007\n - * Added support for SpaceCube.\n\n - * - * \version 1.5 - March 23rd 2007\n - * Used star_dundee_types.h to represent integer values of 1, 2 and 4 - * bytes in a cross-platform manner.\n - * Fixed problems encountered on big endian machines.\n\n - * - * \version 1.4 - March 19th 2007\n - * Improved freeing of memory following errors.\n\n - * - * \version 1.3 - November 7th 2006\n - * Updated to be multi-platform.\n - * Using new CRC table.\n - * Fixed error when checking the format of read-modify-write command - * packets, data length incorrect.\n - * Fixed error when identifying the start of the extended and normal - * read/write address.\n - * Fixed error when reading the data length in a read command.\n\n - * - * \version 1.2 - April 3rd 2006\n - * Fixed potential problems with RMAP_PACKET_STATUS enum being an - * undefined size (no change to this file required).\n\n - * - * \version 1.1 - March 9th 2006\n - * Added support for different byte alignment requirements.\n\n - * - * \version 1.0 - December 20th 2005\n - * Initial version.\n\n - * - * Copyright © 2009 STAR-Dundee Ltd - */ - - - -#ifndef RMAP_PACKET_LIBRARY_H -#define RMAP_PACKET_LIBRARY_H - - - -#include "star-dundee_types.h" - - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#if defined(_WIN32) || defined(_WIN64) - #ifdef _WIN64 - #define RMAPPACKETLIBRARY_CC - #else - #define RMAPPACKETLIBRARY_CC __stdcall - #endif -#else - #define RMAPPACKETLIBRARY_CC -#endif - - - -typedef enum -{ - RMAP_SUCCESS = 0x00, - RMAP_GENERAL_ERROR = 0x01, - RMAP_UNUSED_PACKET_TYPE_OR_COMMAND_CODE = 0x02, - RMAP_INVALID_KEY = 0x03, - RMAP_INVALID_DATA_CRC = 0x04, - RMAP_EARLY_EOP = 0x05, - RMAP_TOO_MUCH_DATA = 0x06, - RMAP_EEP = 0x07, - RMAP_VERIFY_BUFFER_OVERRUN = 0x09, - RMAP_COMMAND_NOT_IMPLEMENTED_OR_AUTHORISED = 0x0a, - RMAP_RMW_DATA_LENGTH_ERROR = 0x0b, - RMAP_INVALID_TARGET_LOGICAL_ADDRESS = 0x0c, - RMAP_INVALID_STATUS = 0xff -} RMAP_STATUS; - - - -#define RMAP_PROTOCOL_IDENTIFIER 1 - -#define RMAP_RESERVED_BIT 0x80 -#define RMAP_COMMAND_BIT 0x40 -#define RMAP_WRITE_OPERATION_BIT 0x20 -#define RMAP_VERIFY_BEFORE_WRITE_BIT 0x10 -#define RMAP_REPLY_BIT 0x08 -#define RMAP_INCREMENT_ADDRESS_BIT 0x04 -#define RMAP_REPLY_ADDRESS_LENGTH_BITS 0x03 - - - -typedef enum -{ - RMAP_WRITE_COMMAND = (RMAP_COMMAND_BIT | - RMAP_WRITE_OPERATION_BIT), - RMAP_WRITE_REPLY = (RMAP_WRITE_OPERATION_BIT), - RMAP_READ_COMMAND = (RMAP_COMMAND_BIT), - RMAP_READ_REPLY = (0), - RMAP_READ_MODIFY_WRITE_COMMAND = (RMAP_COMMAND_BIT | - RMAP_VERIFY_BEFORE_WRITE_BIT), - RMAP_READ_MODIFY_WRITE_REPLY = (RMAP_VERIFY_BEFORE_WRITE_BIT), - RMAP_INVALID_PACKET_TYPE = (0xff) -} RMAP_PACKET_TYPE; - - - -typedef struct -{ - RMAP_PACKET_TYPE packetType; - U8 *pTargetAddress; - unsigned long targetAddressLength; - U8 *pReplyAddress; - unsigned long replyAddressLength; - U8 *pProtocolIdentifier; - U8 *pInstruction; - char verifyBeforeWrite; - char acknowledge; - char incrementAddress; - U8 *pKey; - U16 *pTransactionIdentifier; - U32 *pReadWriteAddress; - U8 *pExtendedReadWriteAddress; - U8 *pStatus; - U8 *pHeader; - unsigned long headerLength; - U8 *pHeaderCRC; - U8 *pData; - void *pDataLength; - U32 dataLength; - U8 *pDataCRC; - U8 *pMask; - U8 maskLength; - U8 *pRawPacket; - unsigned long rawPacketLength; -} RMAP_PACKET; - - - -/* Declarations of the functions provided by the RMAP Packet Library */ - -U32 -RMAPPACKETLIBRARY_CC -RMAP_GetVersion( - void - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_CalculateCRC( - void *pBuffer, - unsigned long len - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_CalculateCRCWithSeed( - void *pBuffer, - unsigned long len, - U8 crc - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_IsCRCValid( - void *pBuffer, - unsigned long len, - U8 crc - ); - -RMAP_STATUS -RMAPPACKETLIBRARY_CC -RMAP_CheckPacketValid( - void *pRawPacket, - unsigned long packetLength, - RMAP_PACKET *pPacketStruct, - char checkPacketTooLong - ); - -RMAP_PACKET_TYPE -RMAPPACKETLIBRARY_CC -RMAP_GetPacketType( - RMAP_PACKET *pPacketStruct - ); - -U8 * -RMAPPACKETLIBRARY_CC -RMAP_GetTargetAddress( - RMAP_PACKET *pPacketStruct, - unsigned long *pTargetAddressLength - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_GetVerifyBeforeWrite( - RMAP_PACKET *pPacketStruct - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_GetPerformAcknowledgement( - RMAP_PACKET *pPacketStruct - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_GetIncrementAddress( - RMAP_PACKET *pPacketStruct - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_GetKey( - RMAP_PACKET *pPacketStruct - ); - -U8 * -RMAPPACKETLIBRARY_CC -RMAP_GetReplyAddress( - RMAP_PACKET *pPacketStruct, - unsigned long *pReplyAddressLength - ); - -U16 -RMAPPACKETLIBRARY_CC -RMAP_GetTransactionID( - RMAP_PACKET *pPacketStruct - ); - -U32 -RMAPPACKETLIBRARY_CC -RMAP_GetAddress( - RMAP_PACKET *pPacketStruct, - U8 *pExtendedAddress - ); - -U8 * -RMAPPACKETLIBRARY_CC -RMAP_GetData( - RMAP_PACKET *pPacketStruct, - U32 *pDataLength - ); - -U32 -RMAPPACKETLIBRARY_CC -RMAP_GetReadLength( - RMAP_PACKET* pPacketStruct - ); - -RMAP_STATUS -RMAPPACKETLIBRARY_CC -RMAP_GetStatus( - RMAP_PACKET *pPacketStruct - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_GetHeaderCRC( - RMAP_PACKET *pPacketStruct - ); - -U8 -RMAPPACKETLIBRARY_CC -RMAP_GetDataCRC( - RMAP_PACKET *pPacketStruct - ); - -U8 * -RMAPPACKETLIBRARY_CC -RMAP_GetMask( - RMAP_PACKET *pPacketStruct, - U8 *pMaskLength - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateWriteCommandPacketLength( - unsigned long targetAddressLength, - unsigned long replyAddressLength, - U32 dataLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillWriteCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char verifyBeforeWrite, - char acknowledge, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 writeAddress, - U8 extendedWriteAddress, - U8 *pData, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildWriteCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char verifyBeforeWrite, - char acknowledge, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 writeAddress, - U8 extendedWriteAddress, - U8 *pData, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildWriteRegisterPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char verifyBeforeWrite, - char acknowledge, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 writeAddress, - U8 extendedWriteAddress, - U32 registerValue, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateWriteReplyPacketLength( - unsigned long initiatorAddressLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillWriteReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - char verifyBeforeWrite, - char incrementAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildWriteReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - char verifyBeforeWrite, - char incrementAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateReadCommandPacketLength( - unsigned long targetAddressLength, - unsigned long replyAddressLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillReadCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 readAddress, - U8 extendedReadAddress, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 readAddress, - U8 extendedReadAddress, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadRegisterPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - char incrementAddress, - U8 key, - U16 transactionIdentifier, - U32 readAddress, - U8 extendedReadAddress, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateReadReplyPacketLength( - unsigned long initiatorAddressLength, - U32 dataLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillReadReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - char incrementAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - U8 *pData, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - char incrementAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - U8 *pData, - U32 dataLength, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateReadModifyWriteCommandPacketLength( - unsigned long targetAddressLength, - unsigned long replyAddressLength, - U32 dataAndMaskLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillReadModifyWriteCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - U8 key, - U16 transactionIdentifier, - U32 readModifyWriteAddress, - U8 extendedReadModifyWriteAddress, - U8 dataAndMaskLength, - U8 *pData, - U8 *pMask, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadModifyWriteCommandPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - U8 key, - U16 transactionIdentifier, - U32 readModifyWriteAddress, - U8 extendedReadModifyWriteAddress, - U8 dataAndMaskLength, - U8 *pData, - U8 *mask, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadModifyWriteRegisterPacket( - U8 *pTargetAddress, - unsigned long targetAddressLength, - U8 *pReplyAddress, - unsigned long replyAddressLength, - U8 key, - U16 transactionIdentifier, - U32 readModifyWriteAddress, - U8 extendedReadModifyWriteAddress, - U32 registerValue, - U32 mask, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -unsigned long -RMAPPACKETLIBRARY_CC -RMAP_CalculateReadModifyWriteReplyPacketLength( - unsigned long initiatorAddressLength, - U32 dataLength, - char alignment - ); - -char -RMAPPACKETLIBRARY_CC -RMAP_FillReadModifyWriteReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - unsigned long dataLength, - U8 *pData, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment, - U8 *pRawPacket, - unsigned long rawPacketLength - ); - -void * -RMAPPACKETLIBRARY_CC -RMAP_BuildReadModifyWriteReplyPacket( - U8 *pInitiatorAddress, - unsigned long initiatorAddressLength, - U8 targetAddress, - RMAP_STATUS status, - U16 transactionIdentifier, - unsigned long dataLength, - U8 *pData, - unsigned long *pRawPacketLength, - RMAP_PACKET *pPacketStruct, - char alignment - ); - -void -RMAPPACKETLIBRARY_CC -RMAP_FreeBuffer( - void *pBuffer - ); - - -/* Macros for accessing the version */ - -#define RMAP_GET_VERSION_MAJOR(versionInfo) (((version) & 0xff000000) >> 24) -#define RMAP_GET_VERSION_MINOR(versionInfo) (((version) & 0x00ff0000) >> 16) -#define RMAP_GET_VERSION_EDIT(versionInfo) (((version) & 0x0000ffc0) >> 6) -#define RMAP_GET_VERSION_PATCH(versionInfo) ((version) & 0x0000003f) - - - -#ifdef __cplusplus -} -#endif - - - -#endif /* RMAP_PACKET_LIBRARY_H */ - - - diff --git a/spw_usb_driver_v2.63/inc/spacewire_usb.h b/spw_usb_driver_v2.63/inc/spacewire_usb.h deleted file mode 100755 --- a/spw_usb_driver_v2.63/inc/spacewire_usb.h +++ /dev/null @@ -1,205 +0,0 @@ -/******************************************************************************/ -/* */ -/* spacewire_usb.h */ -/* */ -/* Header file for all constants which may be used with the STAR-Dundee */ -/* SpaceWire USB driver. */ -/* */ -/* Version 2.61, September 17th 2012 */ -/* */ -/* Version 2.61, 17/09/12 */ -/* ====================== */ -/* Added support for STAR Fire and WBS II. */ -/* */ -/* Version 2.60, 04/01/12 */ -/* ====================== */ -/* Added support for EGSE and SPLT. */ -/* */ -/* Version 2.59, 15/08/11 */ -/* ====================== */ -/* Added support for RTC. */ -/* */ -/* Version 2.58, 12/10/10 */ -/* ===================== */ -/* Added support for Link Analyser Mk2. */ -/* */ -/* Version 2.51 */ -/* ============ */ -/* Added use of star_dundee_types.h. */ -/* */ -/* Version 2.5 */ -/* =========== */ -/* Initial version, following change to new architecture. */ -/* */ -/* Copyright (2012), STAR-Dundee Ltd., */ -/* STAR House, */ -/* 166 Nethergate, */ -/* Dundee, DD1 4EE, */ -/* Scotland, UK. */ -/* e-mail: support@star-dundee.com */ -/* */ -/******************************************************************************/ - - - -#ifndef SPACEWIRE_USB_H -#define SPACEWIRE_USB_H - - - -#ifdef __cplusplus -extern "C" { -#endif - - -/* The types used by the API */ -#include "star_dundee_types.h" - - -/* End of packet marker types */ -#define SPACEWIRE_USB_EOP_CHAR ((U8)0x80) -#define SPACEWIRE_USB_EEP_CHAR ((U8)0x40) - -/* The protocol byte used to identify LODI packets */ -#define SPACEWIRE_USB_LODI_PROTOCOL (0xd1) - - - -/* Possible results of read and send operations */ -typedef enum -{ - TRANSFER_NOT_STARTED = 0, - TRANSFER_STARTED = 1, - TRANSFER_SUCCESS = 2, - TRANSFER_ERROR_DISCONNECT = 3, - TRANSFER_ERROR_PARITY = 4, - TRANSFER_ERROR_UNKNOWN = 5, - TRANSFER_ERROR_TIMEOUT = 6, - TRANSFER_ERROR_LINK_NOT_STARTED = 7, - TRANSFER_ERROR_USER_BUFFER_LOCK_FAILED = 8, - TRANSFER_ERROR_LINK_ALREADY_IN_USE = 9, - TRANSFER_ERROR_RECEIVE_BUFFER_FULL = 0xa, - TRANSFER_ERROR_OUT_OF_MEMORY = 0xb, - TRANSFER_ERROR_NOT_FOUND = 0xc, - TRANSFER_ERROR_USB_ERROR = 0xd, - TRANSFER_ERROR_NOT_REGISTERED_TO_RECEIVE = 0xe -} USB_SPACEWIRE_STATUS, *PUSB_SPACEWIRE_STATUS; - - - -/* Possible traffic types */ -typedef enum -{ - SPACEWIRE_TRAFFIC_UNKNOWN = -1, - SPACEWIRE_TRAFFIC_PACKET = 0, - SPACEWIRE_TRAFFIC_TIMECODE = 1, - SPACEWIRE_TRAFFIC_CONTROL = 2 -} SPACEWIRE_TRAFFIC_TYPE, *PSPACEWIRE_TRAFFIC_TYPE; - - - -/* The different end of packet marker types */ -typedef enum -{ - SPACEWIRE_USB_NO_EOP = 0, - SPACEWIRE_USB_EOP = SPACEWIRE_USB_EOP_CHAR, - SPACEWIRE_USB_EEP = SPACEWIRE_USB_EEP_CHAR -} USB_SPACEWIRE_EOP_TYPE, *PUSB_SPACEWIRE_EOP_TYPE; - - - -/* Possible device types */ -typedef enum -{ - SPACEWIRE_DEVICE_UNKNOWN = -1, - SPACEWIRE_ROUTER_USB = 0, - SPACEWIRE_BRICK = 1, - SPACEWIRE_LINK_ANALYSER = 2, - SPACEWIRE_CONFORMANCE_TESTER = 3, - SPACEWIRE_TUNNEL_BRICK = 4, - SPACEWIRE_LINK_ANALYSER_MK2 = 5, - SPACEWIRE_RTC = 6, - SPACEWIRE_EGSE = 7, - SPACEWIRE_PHYSICAL_LAYER_TESTER = 8, - STAR_FIRE = 9, - WBS_II = 10 -} SPACEWIRE_DEVICE_TYPE, *PSPACEWIRE_DEVICE_TYPE; - - - - -/* Structure used to store packet lengths and EOPs for a read request */ -typedef struct -{ - unsigned long len; - USB_SPACEWIRE_EOP_TYPE eop; - SPACEWIRE_TRAFFIC_TYPE type; -} USB_SPACEWIRE_PACKET_PROPERTIES, *PUSB_SPACEWIRE_PACKET_PROPERTIES; - - - -/* The type of all send and receive identifiers */ -typedef void * USB_SPACEWIRE_ID; - - - -/* Structure used to represent the firmware version of a device */ -typedef struct -{ - U8 major; - U8 minor; - U16 edit; - U8 patch; -} SPACEWIRE_FIRMWARE_VERSION; - - -/* The product ID used by each STAR-Dundee SpaceWire device */ - -/** The product ID used by a device with no EEPROM */ -#define SPACEWIRE_PRODUCT_ID_NO_EEPROM (0x8613) -/** The product ID used by an old device in the power check state */ -#define SPACEWIRE_PRODUCT_ID_POWER_CHECK (0x461f) -/** The product ID used by an old device with no ID set */ -#define SPACEWIRE_PRODUCT_ID_NO_ID (0x1002) -/** The product ID used by the SpaceWire Router-USB */ -#define SPACEWIRE_PRODUCT_ID_ROUTER_USB (0x1011) -/** The product ID used by the SpaceWire-USB Brick */ -#define SPACEWIRE_PRODUCT_ID_BRICK (0x1012) -/** The product ID used by the SpaceWire Link Analyser */ -#define SPACEWIRE_PRODUCT_ID_LINK_ANALYSER (0x1013) -/** The product ID used by the SpaceWire Conformance Tester */ -#define SPACEWIRE_PRODUCT_ID_CONFORMANCE_TESTER (0x1014) -/** The product ID used by the SpaceWire-IP Tunnel */ -#define SPACEWIRE_PRODUCT_ID_TUNNEL_BRICK (0x1015) -/** The product ID used by the SpaceWire Router-USB with multiple channels */ -#define SPACEWIRE_PRODUCT_ID_ROUTER_MULTIPLE_CHANNELS (0x1016) -/** The product ID used by the SpaceWire Router-USB II Rev 4 */ -#define SPACEWIRE_PRODUCT_ID_ROUTER_USB_II_REV4 (0x1017) -/** The product ID used by the SpaceWire Link Analyser Mk2 */ -#define SPACEWIRE_PRODUCT_ID_LINK_ANALYSER_MK2 (0x1018) -/** The product ID used by the SpaceWire RTC */ -#define SPACEWIRE_PRODUCT_ID_RTC (0x1019) -/** The product ID used by the SpaceWire EGSE */ -#define SPACEWIRE_PRODUCT_ID_EGSE (0x101a) -/** The product ID used by the SpaceWire SPLT */ -#define SPACEWIRE_PRODUCT_ID_SPLT (0x101b) -/** The product ID used by the STAR Fire device */ -#define SPACEWIRE_PRODUCT_ID_STAR_FIRE (0x101c) -/** The product ID used by the WBS II device */ -#define SPACEWIRE_PRODUCT_ID_WBS_II (0x101d) -/** A product ID to be used by a future device */ -#define SPACEWIRE_PRODUCT_ID_FUTURE_101E (0x101e) -/** A product ID to be used by a future device */ -#define SPACEWIRE_PRODUCT_ID_FUTURE_101F (0x101f) - - -#ifdef __cplusplus -} -#endif - - - -#endif /* SPACEWIRE_USB_H */ - - - diff --git a/spw_usb_driver_v2.63/inc/spw_config_library.h b/spw_usb_driver_v2.63/inc/spw_config_library.h deleted file mode 100755 --- a/spw_usb_driver_v2.63/inc/spw_config_library.h +++ /dev/null @@ -1,659 +0,0 @@ -/******************************************************************************/ -/* */ -/* spw_config_library.h */ -/* */ -/* Declaration of the functions, and definition of macros provided by the */ -/* SpaceWire Router Configuration Library for the SpaceWire USB and */ -/* SpaceWire PCI drivers. */ -/* */ -/* Version 2.62 - November 7th 2012 */ -/* */ -/* Version 2.62 - 07/11/12 */ -/* ======================= */ -/* Removed commas at end of enumerators. */ -/* */ -/* Version 2.60 - 05/04/12 */ -/* ======================= */ -/* Updated declarations to replace CFGSpaceWire_EnableReadOnAllPorts */ -/* with CFGSpaceWire_EnableReceiveOnAllPorts and */ -/* CFGSpaceWire_IsReadingOnAllPortsEnabled with */ -/* CFGSpaceWire_IsReceiveOnAllPortsEnabled. */ -/* */ -/* Version 2.54 - 10/12/10 */ -/* ======================= */ -/* Replaced CFGSpaceWire_RTOutputPorts with */ -/* CFGSpaceWire_RTGetOutputPorts, which doesn't unnecessarily shift the */ -/* output port bits and is consistent with */ -/* CFGSpaceWire_RTBuildRoutingTableEntry. */ -/* */ -/* Version 2.53 - 26/02/09 */ -/* ======================= */ -/* Updated the calling convention used in the function declarations to */ -/* __stdcall on Windows. */ -/* */ -/* Version 2.52, 04/11/08 */ -/* ====================== */ -/* Added support for precision transmit rate on new Router-USB. */ -/* Added chip ID values. */ -/* */ -/* Version 2.51, 21/10/08 */ -/* ====================== */ -/* Updated to support Windows. */ -/* */ -/* Version 2.50, 08/11/06 */ -/* ====================== */ -/* Initial version, following change to new structure. */ -/* */ -/* Copyright (c) 2012, STAR-Dundee Ltd., */ -/* STAR House, */ -/* 166 Nethergate, */ -/* Dundee, DD1 4EE, */ -/* Scotland, UK. */ -/* http://www.star-dundee.com */ -/* e-mail: support@star-dundee.com */ -/* */ -/******************************************************************************/ - - - -#ifndef SPACEWIRE_ROUTER_LIBRARY -#define SPACEWIRE_ROUTER_LIBRARY - - -#include "star_dundee_types.h" - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#if defined(_WIN32) || defined(_WIN64) - - -/* Windows specifc functions and macros */ - -#ifdef ROUTERCONFIGURATIONLIBRARY_EXPORTS -#define ROUTER_CONFIG_LIBRARY __declspec(dllexport) -#else -#define ROUTER_CONFIG_LIBRARY __declspec(dllimport) -#endif - -/* The calling convention to be used */ -#ifdef _WIN64 -#define ROUTER_CONFIG_CC -#else -#define ROUTER_CONFIG_CC __stdcall -#endif /* WIN64 */ - - -#include "windows.h" - - -#else /* _WIN32 */ - - -/* Linux specific functions and macros */ - -#define ROUTER_CONFIG_LIBRARY -#define ROUTER_CONFIG_CC - - -#endif /* _WIN32 */ - - - -/* Possible bit values */ -#define BIT0 (0x00000001) -#define BIT1 (0x00000002) -#define BIT2 (0x00000004) -#define BIT3 (0x00000008) -#define BIT4 (0x00000010) -#define BIT5 (0x00000020) -#define BIT6 (0x00000040) -#define BIT7 (0x00000080) -#define BIT8 (0x00000100) -#define BIT9 (0x00000200) -#define BIT10 (0x00000400) -#define BIT11 (0x00000800) -#define BIT12 (0x00001000) -#define BIT13 (0x00002000) -#define BIT14 (0x00004000) -#define BIT15 (0x00008000) -#define BIT16 (0x00010000) -#define BIT17 (0x00020000) -#define BIT18 (0x00040000) -#define BIT19 (0x00080000) -#define BIT20 (0x00100000) -#define BIT21 (0x00200000) -#define BIT22 (0x00400000) -#define BIT23 (0x00800000) -#define BIT24 (0x01000000) -#define BIT25 (0x02000000) -#define BIT26 (0x04000000) -#define BIT27 (0x08000000) -#define BIT28 (0x10000000) -#define BIT29 (0x20000000) -#define BIT30 (0x40000000) -#define BIT31 (0x80000000) - - - -/* Exported enums and structs */ - - - -/* Read write address errors */ -typedef enum -{ - CFG_TRANSFER_SUCCESS = 0x00, - CFG_TRANSMIT_PACKET_FAILURE = 0x01, - CFG_REPLY_PACKET_FAILURE = 0x02, - CFG_REPLY_PACKET_TOO_BIG = 0x03, - CFG_REPLY_PACKET_TOO_SMALL = 0x04, - CFG_REPLY_PACKET_NAK = 0x05, - CFG_REPLY_PACKET_CHECKSUM_ERROR = 0x06 -} CFG_SPACEWIRE_STATUS; - - - -/* Length of port timeout */ -typedef enum -{ - CFG_PORT_TIMEOUT_100US = 0x0, - CFG_PORT_TIMEOUT_1MS = 0x1, - CFG_PORT_TIMEOUT_10MS = 0x2, - CFG_PORT_TIMEOUT_100MS = 0x3, - CFG_PORT_TIMEOUT_1S = 0x4 -} CFG_SPACEWIRE_PORT_TIMEOUT; - - - -/* SpaceWire Port errors */ -#define CFG_SPACEWIRE_NO_ERRORS (0) -#define CFG_SPACEWIRE_ERROR_ACTIVE (BIT0) -#define CFG_SPACEWIRE_PACKET_ADDRESS_ERROR (BIT1) -#define CFG_SPACEWIRE_PORT_TIMEOUT_ERROR (BIT2) -#define CFG_SPACEWIRE_DISCONNECT_ERROR (BIT3) -#define CFG_SPACEWIRE_PARITY_ERROR (BIT4) -#define CFG_SPACEWIRE_ESCAPE_ERROR (BIT5) -#define CFG_SPACEWIRE_CREDIT_ERROR (BIT6) -#define CFG_SPACEWIRE_CHARACTER_SEQUENCE_ERROR (BIT7) -#define CFG_SPACEWIRE_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | \ - BIT4 | BIT5 | BIT6 | BIT7) - -/* Config Port errors */ -#define CFG_CONFIG_NO_ERRORS (0) -#define CFG_CONFIG_ERROR_ACTIVE (BIT0) - -/* Config Port errors (non-RMAP) */ -#define CFG_CONFIG_PACKET_ADDRESS_ERROR (BIT1) -#define CFG_CONFIG_PORT_TIMEOUT_ERROR (BIT2) -#define CFG_CONFIG_CHECKSUM_ERROR (BIT3) -#define CFG_CONFIG_TOO_SHORT_ERROR (BIT4) -#define CFG_CONFIG_TOO_LONG_ERROR (BIT5) -#define CFG_CONFIG_PACKET_EEP_ERROR (BIT6) -#define CFG_CONFIG_PROTOCOL_BYTE_ERROR (BIT7) -#define CFG_CONFIG_INVALID_REGISTER_ERROR (BIT8) -#define CFG_CONFIG_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | \ - BIT4 | BIT5 | BIT6 | BIT7 | \ - BIT8) - -/* Config Port errors (RMAP) */ -#define CFG_CONFIG_RMAP_PORT_TIMEOUT_ERROR (BIT1) -#define CFG_CONFIG_RMAP_INVALID_HEADER_CRC (BIT2) -#define CFG_CONFIG_RMAP_INVALID_DATA_CRC (BIT3) -#define CFG_CONFIG_RMAP_INVALID_DESTINATION_KEY (BIT4) -#define CFG_CONFIG_RMAP_COMMAND_NOT_IMPLEMENTED (BIT5) -#define CFG_CONFIG_RMAP_INVALID_DATA_LENGTH (BIT6) -#define CFG_CONFIG_RMAP_INVALID_RMW_DATA_LENGTH (BIT7) -#define CFG_CONFIG_RMAP_INVALID_DESTINATION_ADDRESS (BIT8) -#define CFG_CONFIG_RMAP_EARLY_EOP (BIT9) -#define CFG_CONFIG_RMAP_LATE_EOP (BIT10) -#define CFG_CONFIG_RMAP_EARLY_EEP (BIT11) -#define CFG_CONFIG_RMAP_LATE_EEP (BIT12) -#define CFG_CONFIG_RMAP_VERIFY_BUFFER_OVERRUN_ERROR (BIT13) -#define CFG_CONFIG_RMAP_INVALID_REGISTER_ADDRESS (BIT14) -#define CFG_CONFIG_RMAP_UNSUPPORTED_PROTOCOL_ERROR (BIT15) -#define CFG_CONFIG_RMAP_SOURCE_LOGICAL_ADDRESS_ERROR (BIT16) -#define CFG_CONFIG_RMAP_SOURCE_PATH_ADDRESS_ERROR (BIT17) -#define CFG_CONFIG_RMAP_CARGO_TOO_LARGE (BIT18) -#define CFG_CONFIG_RMAP_UNUSED_COMMAND_OR_PACKET_TYPE (BIT19) -#define CFG_CONFIG_RMAP_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | \ - BIT5 | BIT6 | BIT7 | BIT8 | BIT9 | \ - BIT10 | BIT11 | BIT12 | BIT13 | \ - BIT14 | BIT15 | BIT16 | BIT17 | \ - BIT18 | BIT19) - -/* External Port errors */ -#define CFG_EXTERNAL_NO_ERRORS (0) -#define CFG_EXTERNAL_ERROR_ACTIVE (BIT0) -#define CFG_EXTERNAL_PACKET_ADDRESS_ERROR (BIT1) -#define CFG_EXTERNAL_PORT_TIMEOUT_ERROR (BIT2) -#define CFG_EXTERNAL_INPUT_BUFFER_EMPTY_ERROR (BIT3) -#define CFG_EXTERNAL_INPUT_BUFFER_FULL_ERROR (BIT4) -#define CFG_EXTERNAL_OUTPUT_BUFFER_EMPTY_ERROR (BIT5) -#define CFG_EXTERNAL_OUTPUT_BUFFER_FULL_ERROR (BIT6) -#define CFG_EXTERNAL_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | \ - BIT4 | BIT5 | BIT6) - -/* SpaceWire Port interface state */ -#define CFG_SPACEWIRE_ERROR_RESET (0) -#define CFG_SPACEWIRE_ERROR_WAIT (BIT0) -#define CFG_SPACEWIRE_READY (BIT1) -#define CFG_SPACEWIRE_STARTED (BIT1 | BIT0) -#define CFG_SPACEWIRE_CONNECTING (BIT2) -#define CFG_SPACEWIRE_RUN (BIT2 | BIT0) - -/* Port type */ -#define CFG_CONFIGURATION_PORT (0) -#define CFG_SPACEWIRE_SERIAL_PORT (BIT0) -#define CFG_SPACEWIRE_EXTERNAL_PORT (BIT1) - -/* SpaceWire Port control bits */ -#define CFG_SPACEWIRE_INTERFACE_STATE_START (8) -#define CFG_SPACEWIRE_INTERFACE_STATE (BIT8 | BIT9 | BIT10) -#define CFG_SPACEWIRE_RUNNING (BIT11) -#define CFG_SPACEWIRE_AUTOSTART (BIT12) -#define CFG_SPACEWIRE_START (BIT13) -#define CFG_SPACEWIRE_DISABLE (BIT14) -#define CFG_SPACEWIRE_TRISTATE (BIT15) -#define CFG_SPACEWIRE_RATE (BIT16 | BIT17 | BIT18 | \ - BIT19 | BIT20 | BIT21 | BIT22) -#define CFG_SPACEWIRE_RATE_START (16) - -/* Bits in the GAR Table */ -#define CFG_GAR_OUTPUT_PORTS_START (1) -#define CFG_GAR_OUTPUT_PORTS (BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | \ - BIT6 | BIT7 | BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | BIT13 | BIT14 | \ - BIT15 | BIT16 | BIT17 | BIT18 | BIT19 | BIT20 | BIT21 | BIT22 | \ - BIT23 | BIT24 | BIT25 | BIT26 | BIT27 | BIT28) -#define CFG_GAR_DEL_HEAD (BIT29) -#define CFG_GAR_PRIORITY (BIT30) -#define CFG_GAR_INVALID_ADDR (BIT31) - -/* Bits in the router control register */ -#define CFG_RC_TIMEOUT_ENABLE_START (0) -#define CFG_RC_TIMEOUT_ENABLE (BIT0) -#define CFG_RC_TIMEOUT_VALUE_START (1) -#define CFG_RC_TIMEOUT_VALUE (BIT1 | BIT2 | BIT3) -#define CFG_RC_DISABLE_ON_SILENCE (BIT4) -#define CFG_RC_DISABLE_ON_SILENCE_START (4) -#define CFG_RC_START_ON_REQUEST (BIT5) -#define CFG_RC_START_ON_REQUEST_START (5) -#define CFG_RC_SELF_ADDRESSING (BIT6) -#define CFG_RC_SELF_ADDRESSING_START (6) -#define CFG_RC_INTERFACE (BIT7) -#define CFG_RC_INTERFACE_START (7) -#define CFG_RC_INTERFACE_IDENT (BIT8) -#define CFG_RC_INTERFACE_IDENT_START (8) - -/* The bits shared by all ports */ -#define CFG_PORT_CONNECTION (BIT24 | BIT25 | BIT26 | BIT27 | BIT28) -#define CFG_PORT_CONNECTION_START (24) -#define CFG_PORT_TYPE (BIT29 | BIT30 | BIT31) -#define CFG_PORT_TYPE_START (29) - -/* Network discovery register values */ -#define CFG_NETD_TYPE (BIT0 | BIT1 | BIT2 | BIT3) -#define CFG_NETD_TYPE_START (0) -#define CFG_NETD_RETURN_PORT (BIT4 | BIT5 | BIT6 | BIT7) -#define CFG_NETD_RETURN_PORT_START (4) -#define CFG_NETD_RUNNING_PORTS (BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | \ - BIT13 | BIT14 | BIT15 | BIT16 | BIT17 | BIT18 | BIT19 | BIT20 | \ - BIT21 | BIT22 | BIT23 | BIT24 | BIT25 | BIT26 | BIT27 | BIT28 | \ - BIT29 | BIT30 | BIT31) -#define CFG_NETD_RUNNING_PORTS_START (8) - -/* Values in the ID register */ -#define CFG_ID_VERSION (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | \ - BIT5 | BIT6 | BIT7) -#define CFG_ID_VERSION_START (0) -#define CFG_ID_CHIP (BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | \ - BIT13 | BIT14 | BIT15) -#define CFG_ID_CHIP_START (8) -#define CFG_ID_MANUFACTURER (BIT16 | BIT17 | BIT18 | BIT19 | \ - BIT20 | BIT21 | BIT22 | BIT23) -#define CFG_ID_MANUFACTURER_START (16) - -/* Values in the Time-Code register */ -#define CFG_TC_VALUE (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | \ - BIT5) -#define CFG_TC_VALUE_START (0) -#define CFG_TC_FLAGS (BIT6 | BIT7) -#define CFG_TC_FLAGS_START (6) - -/* Values for the Router Base Clock Select */ -#define CFG_RTR_CLK_100_MBITS (0) -#define CFG_RTR_CLK_200_MBITS (BIT0) - -/* Values for the Brick Base Clock */ -#define CFG_BRK_CLK_100_MHZ (0) -#define CFG_BRK_CLK_120_MHZ (BIT0) -#define CFG_BRK_CLK_140_MHZ (BIT1) -#define CFG_BRK_CLK_160_MHZ (BIT0 | BIT1) -#define CFG_BRK_CLK_180_MHZ (BIT2) -#define CFG_BRK_CLK_200_MHZ (BIT2 | BIT0) - -/* Values for the Brick Base Divider */ -#define CFG_BRK_DVDR_1 (0) -#define CFG_BRK_DVDR_2 (BIT0) -#define CFG_BRK_DVDR_4 (BIT1) - -/* Values in the Tx register */ -#define CFG_TX_BRICK_2MBITS (BIT27) -#define CFG_TX_BRICK_2MBITS_START (27) - -/* Values in the Precision Transmit Rate register */ -#define CFG_PT_ENABLE (BIT16) -#define CFG_PT_ENABLE_START (16) -#define CFG_PT_READY (BIT17) -#define CFG_PT_READY_START (17) -#define CFG_PT_IN_USE (BIT20) -#define CFG_PT_IN_USE_START (20) -#define CFG_PT_RATE_BITS (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | \ - BIT7 | BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | \ - BIT13 | BIT14 | BIT15 ) -#define CFG_PT_DIVIDER_CONSTANT ((double)(pow((double)2, (double)48) / (double)600)) - -/* Chip ID values */ -#define CFG_CID_ROUTER_ASIC (0) /* SpaceWire Router ASIC and IP */ -#define CFG_CID_ROUTER_USB (1) /* Original SpaceWire Router-USB */ -#define CFG_CID_USB_BRICK (2) /* SpaceWire-USB Brick */ -#define CFG_CID_FEIC (4) /* The FEIC chip */ -#define CFG_CID_ROUTER_USB_2 (5) /* New SpaceWire Router-USB */ -#define CFG_CID_PCI_MK2 (7) /* SpaceWire PCI Mk2 */ -#define CFG_CID_PCI_EXPRESS (8) /* SpaceWire PCI Express */ -#define CFG_CID_RTC (9) /* RTC Development Unit */ -#define CFG_CID_CONFORMANCE_TESTER (10) /* SpaceWire Conformance Tester */ -#define CFG_CID_EGSE (11) /* SpaceWire EGSE */ -#define CFG_CID_STAR_FIRE (12) /* STAR Fire */ -#define CFG_CID_WBS_MK2 (14) /* WBS Mk2 */ - - -/* Addresses which can be read from and written to */ -#define CFG_EXTENDED_ADDRESS (0x100) -#define CFG_ADDR_NET_DISC (CFG_EXTENDED_ADDRESS + 0) -#define CFG_ADDR_NET_DISC_IDENT (CFG_EXTENDED_ADDRESS + 1) -#define CFG_ADDR_ROUTER_CONTROL (CFG_EXTENDED_ADDRESS + 2) -#define CFG_ADDR_ERRORS (CFG_EXTENDED_ADDRESS + 3) -#define CFG_ADDR_TIMECODE (CFG_EXTENDED_ADDRESS + 4) -#define CFG_ADDR_IDS (CFG_EXTENDED_ADDRESS + 5) -#define CFG_ADDR_GP (CFG_EXTENDED_ADDRESS + 6) -#define CFG_ADDR_TICK (CFG_EXTENDED_ADDRESS + 7) -#define CFG_ADDR_TX_RATE (CFG_EXTENDED_ADDRESS + 8) -#define CFG_ADDR_PRECISION_1 (CFG_EXTENDED_ADDRESS + 0xC) -#define CFG_ADDR_PRECISION_2 (CFG_EXTENDED_ADDRESS + 0xD) - - -/* Exported functions */ - -/* Version information */ -ROUTER_CONFIG_LIBRARY double ROUTER_CONFIG_CC CFGSpaceWire_GetAPIVersion(void); - -/* Configuration address stack manipulation functions */ -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_StackClear(void); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_AddrStackPush( - U8 dwAddress); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_AddrStackPop(void); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RetAddrStackPush( - U8 dwAddress); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_RetAddrStackPop(void); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_SetProtocolByte( - U8 ProtocolByte); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_GetProtocolByte(void); - -/* RMAP functions */ -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_EnableRMAP( - char useRMAP); -ROUTER_CONFIG_LIBRARY char ROUTER_CONFIG_CC CFGSpaceWire_IsRMAPEnabled(); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_SetRMAPDestinationKey( - U8 destinationKey); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_GetRMAPDestinationKey(); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_SetRMAPAlignment( - U8 alignment); -ROUTER_CONFIG_LIBRARY U8 ROUTER_CONFIG_CC CFGSpaceWire_GetRMAPAlignment(); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_EnableReceiveOnAllPorts(char enable); -ROUTER_CONFIG_LIBRARY char ROUTER_CONFIG_CC - CFGSpaceWire_IsReceiveOnAllPortsEnabled(); - -/* Ignoring replies to write commands functions */ -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_IgnoreWriteReplies( - char ignore); -ROUTER_CONFIG_LIBRARY char ROUTER_CONFIG_CC - CFGSpaceWire_AreWriteRepliesIgnored(); - -/* Configuration address read and write functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_ReadAddress( - star_device_handle hDevice, U32 dwAddress, U32 *dwData); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_WriteAddress( - star_device_handle hDevice, U32 dwAddress, U32 dwData); - -/* Router link functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_StartLink( - star_device_handle hDevice, U32 dwLinkNum); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_StopLink( - star_device_handle hDevice, U32 dwLinkNum); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_TriStateLink( - star_device_handle hDevice, U32 dwLinkNum, char bEnabled); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetLinkSpeed( - star_device_handle hDevice, U32 dwLinkNum, U32 dwSpeed); - -/* Routing table functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetRoutingTableEntry( - star_device_handle hDevice, U32 nLogicalAddress, U32 *dwRoutingTableEntry); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetRoutingTableEntry( - star_device_handle hDevice, U32 nLogicalAddress, U32 dwRoutingTableEntry); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_ClearRoutingTableEntry( - star_device_handle hDevice, U32 nLogicalAddress); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTIsEnabled( - U32 dwRoutingTableEntry, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTIsDelHead( - U32 dwRoutingTableEntry, char *bDelHead); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTIsPriority( - U32 dwRoutingTableEntry, char *bPriority); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTOutputPorts( - U32 dwRoutingTableEntry, U32 *dwOutputPorts); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RTGetOutputPorts( - U32 dwRoutingTableEntry, U32 *dwOutputPorts); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_RTBuildRoutingTableEntry(U32 *dwRoutingTableEntry, - U32 dwOutputPorts, char bDelHead, char bPriority); - -/* Link status control functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetLinkStatusControl( - star_device_handle hDevice, U32 dwLinkNum, U32 *dwStatusControl); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetLinkStatusControl( - star_device_handle hDevice, U32 dwLinkNum, U32 dwStatusControl); - -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSErrorStatus( - U32 dwStatusControl, U32 *dwErrorStatus); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSConfigErrorStatus( - U32 dwStatusControl, U32 *dwErrorStatus); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSExternalErrorStatus( - U32 dwStatusControl, U32 *dwErrorStatus); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSLinkState( - U32 dwStatusControl, U32 *dwLinkStatus); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsLinkRunning( - U32 dwStatusControl, char *isLinkRunning); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsAutoStart( - U32 dwStatusControl, char *isAutoStart); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSEnableAutoStart( - U32 *dwStatusControl, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsStart( - U32 dwStatusControl, char *isStart); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSEnableStart( - U32 *dwStatusControl, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsDisabled( - U32 dwStatusControl, char *isDisabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSEnableDisabled( - U32 *dwStatusControl, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSIsTristate( - U32 dwStatusControl, char *isTristate); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSEnableTristate( - U32 *dwStatusControl, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSOperatingSpeed( - U32 dwStatusControl, U32 *dwOperatingSpeed); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSSetOperatingSpeed( - U32 *dwStatusControl, U32 dwOperatingSpeed); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSOutputPortConnection( - U32 dwStatusControl, U32 *dwOutputPortConnection); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_LSPortType( - U32 dwStatusControl, U32 *dwPortType); - -/* Network discovery information retreival */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetNetworkDiscoveryValue(star_device_handle hDevice, - U32 *dwNetworkDiscovery); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_NDDeviceType( - U32 dwNetDisc, U32 *dwDeviceType); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_NDReturnPort( - U32 dwNetDisc, U32 *dwReturnPort); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_NDRunningLinks( - U32 dwNetDisc, U32 *dwRunningLinks); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_NDNumberLinks( - U32 dwNetDisc, U32 *dwNumberLinks); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetNumberLinks( - star_device_handle hDevice, U32 *dwNumLinks); - -/* Router identity register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetNetworkID( - star_device_handle hDevice, U32 dwNetworkID); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetNetworkID( - star_device_handle hDevice, U32 *dwNetworkID); - -/* Router control register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetPortTimeout( - star_device_handle hDevice, char bEnabled, - CFG_SPACEWIRE_PORT_TIMEOUT timeout); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetPortTimeout( - star_device_handle hDevice, char *bEnabled, - CFG_SPACEWIRE_PORT_TIMEOUT *timeout); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_IsPortTimeoutEnabled( - star_device_handle hDevice, char *bEnabled); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetAsInterface( - star_device_handle hDevice, char bEnabled, char bAddIdentifier); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetRouterControlRegister(star_device_handle hDevice, - U32 *dwRouterCtrlReg); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetRouterControlRegister(star_device_handle hDevice, - U32 dwRouterCtrlReg); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetTimeoutEnabled( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetTimeoutEnabled( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetTimeoutSelection( - U32 dwRouterCtrlReg, U32 *dwSelection); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetTimeoutSelection( - U32 *dwRouterCtrlReg, U32 dwSelection); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetDisableOnSilence( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetDisableOnSilence( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetStartOnRequest( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetStartOnRequest( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetSelfAddressing( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetSelfAddressing( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCGetInterface( - U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_RCSetInterface( - U32 *dwRouterCtrlReg, char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_RCGetInterfaceIdentifier(U32 dwRouterCtrlReg, char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_RCSetInterfaceIdentifier(U32 *dwRouterCtrlReg, char bEnabled); - -/* Error active register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetErrorStatus( - star_device_handle hDevice, U32 *dwErrorStatus); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_ClearErrorStatus( - star_device_handle hDevice, U32 dwPorts); - -/* Time-Code register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetTimecodeRegister( - star_device_handle hDevice, U32 *dwTimecodeReg); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_TCGetValue( - U32 dwTimecodeReg, U32 *dwValue); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_TCGetFlags( - U32 dwTimecodeReg, U32 *dwValue); - -/* Manufacturer and Chip ID register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetIDRegister( - star_device_handle hDevice, U32 *dwIDs); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_IDGetManufacturer( - U32 dwIDs, U32 *dwManufacturerID); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_IDGetChipID(U32 dwIDs, - U32 *dwChipID); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC CFGSpaceWire_IDGetVersion(U32 dwIDs, - U32 *dwVersion); - -/* General purpose register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetGeneralPurposeStatus( - star_device_handle hDevice, U32 *dwGeneralPurposeStatus); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetGeneralPurposeStatus( - star_device_handle hDevice, U32 dwGeneralPurposeStatus); - -/* Tick enable register functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_GetTickEnableStatus( - star_device_handle hDevice, U32 *dwTickEnableStatus); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC CFGSpaceWire_SetTickEnableStatus( - star_device_handle hDevice, U32 dwTickEnableStatus); - - -/* Base Transmit Rate functions */ -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetRouterBaseTransmitRate(star_device_handle hDevice, - U32 dwBaseClkSel); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetRouterBaseTransmitRate(star_device_handle hDevice, - U32 *dwBaseClkSel); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetBrickBaseTransmitRate(star_device_handle hDevice, - U32 dwBaseClk, U32 dwBaseDvdr, U32 dwEnableClk); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetBrickBaseTransmitRate(star_device_handle hDevice, - U32 *dwBaseClk, U32 *dwBaseDvdr, U32 *dwEnableClk); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetPrecisionTransmitRegister(star_device_handle hDevice, - U32 *dwPrecisionTransmit); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetPrecisionTransmitRegister(star_device_handle hDevice, - U32 dwPrecisionTransmit); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_PTGetPrecisionTransmitEnabled(U32 dwPrecisionTransmit, - char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_PTSetPrecisionTransmitEnabled(U32 *dwPrecisionTransmit, - char bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_PTGetPrecisionTransmitReady(U32 dwPrecisionTransmit, - char *bEnabled); -ROUTER_CONFIG_LIBRARY void ROUTER_CONFIG_CC - CFGSpaceWire_PTGetPrecisionTransmitInUse(U32 dwPrecisionTransmit, - char *bEnabled); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_GetPrecisionTransmitRate(star_device_handle hDevice, - double *PrecisionTransmitRate); -ROUTER_CONFIG_LIBRARY int ROUTER_CONFIG_CC - CFGSpaceWire_SetPrecisionTransmitRate(star_device_handle hDevice, - double PrecisionTransmitRate); - - - -#ifdef __cplusplus -} -#endif - - - -#endif /* SPACEWIRE_ROUTER_LIBRARY */ - - - diff --git a/spw_usb_driver_v2.63/inc/spw_usb_api.h b/spw_usb_driver_v2.63/inc/spw_usb_api.h deleted file mode 100755 --- a/spw_usb_driver_v2.63/inc/spw_usb_api.h +++ /dev/null @@ -1,330 +0,0 @@ -/******************************************************************************/ -/* */ -/* spw_usb_api.h */ -/* */ -/* Declaration of the functions provided by the SpaceWire USB API Library */ -/* for the SpaceWire USB devices. */ -/* */ -/* Version 2.62, March 11th 2013 */ -/* */ -/* Version 2.62, 11/03/13 */ -/* ====================== */ -/* Fixed bug dealing with received traffic which is not a packet. */ -/* */ -/* Version 2.61, 21/09/12 */ -/* ====================== */ -/* Added support for STAR Fire and WBS II. */ -/* */ -/* Version 2.60, 04/01/12 */ -/* ====================== */ -/* Added support for EGSE and SPLT. */ -/* */ -/* Version 2.59, 15/08/11 */ -/* ====================== */ -/* Added support for RTC. */ -/* */ -/* Version 2.5, 12/10/10 */ -/* ===================== */ -/* Added support for Link Analyser Mk2. */ -/* */ -/* Version 1.5, 12/03/10 */ -/* ===================== */ -/* Added GetFirmwareVersionExtended and restored GetFirmwareVersion to */ -/* its original form. */ -/* */ -/* Version 1.4, 03/03/10 */ -/* ===================== */ -/* Fixed bug waiting on a receive to complete. */ -/* Added support for multiple send channels. */ -/* Added functions to get serial number and product ID. */ -/* */ -/* Version 1.3, 26/2/09 */ -/* ==================== */ -/* Updated the calling convention used in the function declaration to */ -/* __stdcall on Windows. */ -/* */ -/* Version 1.2, 21/1/09 */ -/* ==================== */ -/* Updated to compile on both Windows and Linux. */ -/* */ -/* Version 1.1, 8/10/06 */ -/* ==================== */ -/* Linux release. */ -/* */ -/* Version 1.0, 24/4/06 */ -/* ==================== */ -/* Initial version. */ -/* */ -/* Copyright (2013), STAR-Dundee Ltd., */ -/* STAR House, */ -/* 166 Nethergate, */ -/* Dundee, DD1 4EE, */ -/* Scotland, UK. */ -/* e-mail: support@star-dundee.com */ -/* */ -/******************************************************************************/ - - - -#ifndef SPACEWIRE_USB_API_H -#define SPACEWIRE_USB_API_H - - - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#include "spacewire_usb.h" - - - -#if defined(_WIN32) || defined(_WIN64) - - -/* Windows specifc functions and macros */ - -#ifdef SPACEWIREUSBAPI_EXPORTS -#define SPACEWIREUSB_API __declspec(dllexport) -#else -#define SPACEWIREUSB_API __declspec(dllimport) -#endif - -#ifdef _WIN64 -#define SPW_USB_API_CC -#else -#define SPW_USB_API_CC __stdcall -#endif /* WIN64 */ - - -#include "windows.h" - - -#else /* _WIN32 */ - - -/* Linux specific functions and macros */ - -#define SPACEWIREUSB_API -#define SPW_USB_API_CC - - -#endif /* _WIN32 */ - - - -/* Functions provided by the API */ - -/* General functions */ -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_Open( - star_device_handle *phDevice, int nDeviceNum); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_Close( - star_device_handle hDevice); -SPACEWIREUSB_API U8 SPW_USB_API_CC USBSpaceWire_CountDevices(); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_ListDevices(); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetDriverVersion(); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetIFVersion(); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetAPIVersion(); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetTimeout( - star_device_handle hDevice, double timeout); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetTimeout( - star_device_handle hDevice); -SPACEWIREUSB_API U8 SPW_USB_API_CC USBSpaceWire_GetSpaceWireAddress( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetSpaceWireAddress( - star_device_handle hDevice, U8 address); -SPACEWIREUSB_API U16 SPW_USB_API_CC USBSpaceWire_GetFirmwareVersion( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_GetFirmwareVersionExtended( - star_device_handle hDevice, SPACEWIRE_FIRMWARE_VERSION *pVersion); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_ClearEndpoints( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_ResetDevice( - star_device_handle hDevice); -SPACEWIREUSB_API SPACEWIRE_DEVICE_TYPE SPW_USB_API_CC - USBSpaceWire_GetDeviceType(star_device_handle hDevice); -SPACEWIREUSB_API SPACEWIRE_DEVICE_TYPE SPW_USB_API_CC - USBSpaceWire_GetUnopenedDeviceType(int deviceNum); -SPACEWIREUSB_API U16 SPW_USB_API_CC USBSpaceWire_GetDeviceProductID( - star_device_handle hDevice); -SPACEWIREUSB_API U16 SPW_USB_API_CC USBSpaceWire_GetUnopenedDeviceProductID( - int deviceNum); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableHeaderMode( - star_device_handle hDevice, char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsHeaderModeEnabled( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableNetworkMode( - star_device_handle hDevice, char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsNetworkModeEnabled( - star_device_handle hDevice); -SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetUSBVersion( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_GetAPIString(char *str); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_GetSerialNumber( - star_device_handle hDevice, U8 pSerialNumber[11]); - -/* Receive functions */ -SPACEWIREUSB_API unsigned long SPW_USB_API_CC - USBSpaceWire_GetDriverDroppedPackets(star_device_handle hDevice); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC - USBSpaceWire_GetDriverDroppedBytes(star_device_handle hDevice); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC USBSpaceWire_GetDroppedPackets( - star_device_handle hDevice); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC USBSpaceWire_GetDroppedBytes( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_RegisterReceiveOnPort( - star_device_handle hDevice, U8 port); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_UnregisterReceiveOnPort( - star_device_handle hDevice, U8 port); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_RegisterReceiveOnAllPorts( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_UnregisterReceiveOnAllPorts( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_ReadPackets( - star_device_handle hDevice, void *pBuffer, U32 nBufferSize, - U32 nPacketNum, char bWait, PUSB_SPACEWIRE_PACKET_PROPERTIES properties, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeRead( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeAllReads( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_GetReadStatus( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_WaitOnReadCompleting(star_device_handle hDevice, - USB_SPACEWIRE_ID identifier, char bWaitIndefinitely); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableReadThrottling( - star_device_handle hDevice, char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsReadThrottling( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetDriverReadBufferSize( - star_device_handle hDevice, unsigned long nBufferSize); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC - USBSpaceWire_GetDriverReadBufferSize(star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetDriverReadStructsNum( - star_device_handle hDevice, unsigned long nStructsNum); -SPACEWIREUSB_API unsigned long SPW_USB_API_CC - USBSpaceWire_GetDriverReadStructsNum(star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_WaitOnReadPacketAvailable( - star_device_handle hDevice, double timeout); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_GetReadLength( - PUSB_SPACEWIRE_PACKET_PROPERTIES pProperties, U32 nPacketNum); -SPACEWIREUSB_API USB_SPACEWIRE_EOP_TYPE SPW_USB_API_CC - USBSpaceWire_GetReadEOPStatus(PUSB_SPACEWIRE_PACKET_PROPERTIES pProperties, - U32 nPacketNum); -SPACEWIREUSB_API SPACEWIRE_TRAFFIC_TYPE SPW_USB_API_CC - USBSpaceWire_GetReadTrafficType( - PUSB_SPACEWIRE_PACKET_PROPERTIES pProperties, U32 nPacketNum); - -/* Send functions */ -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_GetNumberOfSendChannels( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendPacketTo( - star_device_handle hDevice, void *pBuffer, U32 nBufferSize, - U8 *pAddress, U32 nAddressLen, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendPacketToOverChannel(star_device_handle hDevice, U8 channel, - void *pBuffer, U32 nBufferSize, U8 *pAddress, U32 nAddressLen, - char bWait, USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketsTo(star_device_handle hDevice, - void *pBuffer, U32 nPacketSize, U32 nBufferSize, U8 *pAddress, - U32 nAddressLen, char bWait, USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketsToOverChannel(star_device_handle hDevice, - U8 channel, void *pBuffer, U32 nPacketSize, U32 nBufferSize, - U8 *pAddress, U32 nAddressLen, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketLengthsTo(star_device_handle hDevice, - void **pBuffers, U32 *pPacketSizes, U32 nNumberOfPackets, U8 *pAddress, - U32 nAddressLen, char bWait, USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketLengthsToOverChannel( - star_device_handle hDevice, U8 channel, void **pBuffers, - U32 *pPacketSizes, U32 nNumberOfPackets, U8 *pAddress, U32 nAddressLen, - char bWait, USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendPacket( - star_device_handle hDevice, void *pBuffer, U32 nBufferSize, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendPacketOverChannel(star_device_handle hDevice, U8 channel, - void *pBuffer, U32 nBufferSize, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePackets(star_device_handle hDevice, void *pBuffer, - U32 nPacketSize, U32 nBufferSize, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketsOverChannel(star_device_handle hDevice, - U8 channel, void *pBuffer, U32 nPacketSize, U32 nBufferSize, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketLengths(star_device_handle hDevice, - void **pBuffers, U32 *pPacketSizes, U32 nNumberOfPackets, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_SendMultiplePacketLengthsOverChannel( - star_device_handle hDevice, U8 channel, void **pBuffers, - U32 *pPacketSizes, U32 nNumberOfPackets, char bWait, - USB_SPACEWIRE_ID *identifier); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeSend( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeAllSends( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_GetSendStatus( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_WaitOnSendCompleting(star_device_handle hDevice, - USB_SPACEWIRE_ID identifier, char bWaitIndefinitely); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_GetSendSize( - star_device_handle hDevice, USB_SPACEWIRE_ID identifier); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetDriverSendBufferSize( - star_device_handle hDevice, U32 nBufferSize); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_GetDriverSendBufferSize( - star_device_handle hDevice); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableSendEEPs( - star_device_handle hDevice, char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsSendEEPsEnabled( - star_device_handle hDevice); -SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC - USBSpaceWire_TunnelSendTraffic(star_device_handle hDevice, - SPACEWIRE_TRAFFIC_TYPE type, void *pBuffer, U32 nBufferSize, - USB_SPACEWIRE_EOP_TYPE eop, U8 port, char bWait, - USB_SPACEWIRE_ID *identifier); - -/* Time-code functions */ -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_PerformTickIn( - star_device_handle hDevice, U8 timein); -SPACEWIREUSB_API char SPW_USB_API_CC - USBSpaceWire_TC_EnableExternalTimecodeSelection(star_device_handle hDevice, - char enable); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_Reset( - star_device_handle hDevice); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_EnableAutoTickIn( - star_device_handle hDevice, char enableAutoTickIns, char enableAllPorts); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_SetAutoTickInFrequency( - star_device_handle hDevice, U32 frequency); -SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_StartReadingTimecodes( - star_device_handle hDevice, void *arg, void (*callbackfunc)( - star_device_handle hDevice, U8 timecode, void *arg)); -SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_TC_StopReadingTimecodes( - star_device_handle hDevice); -SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_TC_GetClockFrequency( - star_device_handle hDevice); - - - -#ifdef __cplusplus -} -#endif - - - -#endif /* SPACEWIRE_USB_API_H */ - - diff --git a/spw_usb_driver_v2.63/inc/star-dundee_types.h b/spw_usb_driver_v2.63/inc/star-dundee_types.h deleted file mode 100644 --- a/spw_usb_driver_v2.63/inc/star-dundee_types.h +++ /dev/null @@ -1,161 +0,0 @@ -/** - * \file star-dundee_types.h - * \brief Definitions of STAR-Dundee commonly used types. - * \author Stuart Mills\n - * STAR-Dundee\n - * c/o School of Computing\n - * University of Dundee\n - * Dundee, DD1 4HN\n - * Scotland, UK\n - * e-mail: support@star-dundee.com - * - * This file contains the definitions of common types used by STAR-Dundee - * software drivers and APIs. - * - * IMPORTANT NOTE: - * \note If you are experiencing compilation errors indicating that - * U8 is already defined, for example, please add the following - * line to your code prior to including this file:\n - * \#define NO_STAR_TYPES\n - * Alternatively you can compile your code with a flag of - * -DNO_STAR_TYPES.\n - * - * \version 1.1 - August 22nd 2011\n - * Removed star_device_handle, not required by STAR-System.\n\n - * - * \version 1.0 - March 22nd 2007\n - * Initial version.\n\n - * - * Copyright © 2009 STAR-Dundee Ltd - */ - - -/** - * \defgroup STARDundeeTypes STAR-Dundee Types - * This section contains the definitions of types used in STAR-Dundee software - * drivers and APIs. - */ - -/** - * \def TRUE - * \ingroup STARDundeeTypes - * A value that can be used to represent the boolean value of true. - */ - -/** - * \def FALSE - * \ingroup STARDundeeTypes - * A value that can be used to represent the boolean value of false. - */ - -/** - * \typedef U8 - * \ingroup STARDundeeTypes - * A type that can be used to represent an unsigned 8-bit number. - */ - -/** - * \typedef U16 - * \ingroup STARDundeeTypes - * A type that can be used to represent an unsigned 16-bit number. - */ - -/** - * \typedef U32 - * \ingroup STARDundeeTypes - * A type that can be used to represent an unsigned 32-bit number. - */ - -/** - * \typedef REGISTER - * \ingroup STARDundeeTypes - * A type that can be used to represent a 4-byte register. - */ - - -#ifndef STAR_DUNDEE_TYPES -#define STAR_DUNDEE_TYPES - -/* Define TRUE and FALSE */ -#ifndef TRUE - #define TRUE 1 -#endif -#ifndef FALSE - #define FALSE 0 -#endif - -#ifndef NO_STAR_TYPES - -#if (defined(__linux__) || defined(LINUX) || defined(__LINUX__) || \ - defined(__CYGWIN__)) && defined(__KERNEL__) - - #include - - /* Define U8, U16 and U32 in the Linux kernel */ - #ifndef U8 - typedef u8 U8; - #endif - #ifndef U16 - typedef u16 U16; - #endif - #ifndef U32 - typedef u32 U32; - #endif - -#else - - #include - - /* Define U8 */ - #ifndef U8 - #if (UCHAR_MAX == 0xff) - typedef unsigned char U8; - #elif (UINT_MAX == 0xff) - typedef unsigned int U8; - #else - #error "No valid definition of U8 available" - #endif - #endif - - /* Define U16 */ - #ifndef U16 - #if (USHRT_MAX == 0xffff) - typedef unsigned short U16; - #elif (UINT_MAX == 0xffff) - typedef unsigned int U16; - #elif (UCHAR_MAX == 0xffff) - typedef unsigned char U16; - #else - #error "No valid definition of U16 available" - #endif - #endif - - /* Define U32 */ - #ifndef U32 - #if (UINT_MAX == 0xffffffff) - typedef unsigned int U32; - #elif (ULONG_MAX == 0xffffffff) - typedef unsigned long U32; - #elif (USHRT_MAX == 0xffffffff) - typedef unsigned short U32; - #elif (UCHAR_MAX == 0xffffffff) - typedef unsigned char U32; - #else - #error "No valid definition of U32 available" - #endif - #endif - -#endif /* Linux kernel test */ - - -#endif /* NO_STAR_TYPES */ - -/* Define REGISTER */ -#ifndef REGISTER - typedef U32 REGISTER; -#endif - - -#endif /* STAR_DUNDEE_TYPES */ - - diff --git a/spw_usb_driver_v2.63/inc/star_dundee_types.h b/spw_usb_driver_v2.63/inc/star_dundee_types.h deleted file mode 100755 --- a/spw_usb_driver_v2.63/inc/star_dundee_types.h +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************/ -/* */ -/* star_dundee_types.h */ -/* */ -/* This file contains the definitions of common types used by STAR-Dundee */ -/* drivers and APIs. */ -/* */ -/* IMPORTANT NOTE: If you are experiencing compilation errors indicating */ -/* that U8 is already defined, for example, please add the */ -/* following line to your code prior to including this */ -/* file: */ -/* #define NO_STAR_TYPES */ -/* Alternatively you can compile your code with a flag of */ -/* -DNO_STAR_TYPES. */ -/* */ -/* Version 1.0, March 22nd 2007 */ -/* */ -/* Version 1.0 - March 22nd 2007 */ -/* =========== */ -/* Initial version. */ -/* */ -/* Copyright (2012), STAR-Dundee Ltd., */ -/* STAR House, */ -/* 166 Nethergate, */ -/* Dundee, DD1 4EE, */ -/* Scotland, UK. */ -/* e-mail: support@star-dundee.com */ -/* */ -/******************************************************************************/ - - - -#ifndef STAR_DUNDEE_TYPES -#define STAR_DUNDEE_TYPES - - -typedef void *star_device_handle; - - -#ifndef NO_STAR_TYPES - -#if (defined(__linux__) || defined(LINUX) || defined(__LINUX__)) && \ - defined(__KERNEL__) - - #include - - /* Define U8, U16 and U32 in the Linux kernel */ - typedef u8 U8; - typedef u16 U16; - typedef u32 U32; - -#else - - #include - - /* Define U8 */ - #if (UCHAR_MAX == 0xff) - typedef unsigned char U8; - #elif (UINT_MAX == 0xff) - typedef unsigned int U8; - #else - #error "No valid definition of U8 available" - #endif - - /* Define U16 */ - #if (USHRT_MAX == 0xffff) - typedef unsigned short U16; - #elif (UINT_MAX == 0xffff) - typedef unsigned int U16; - #elif (UCHAR_MAX == 0xffff) - typedef unsigned char U16; - #else - #error "No valid definition of U16 available" - #endif - - /* Define U32 */ - #if (UINT_MAX == 0xffffffff) - typedef unsigned int U32; - #elif (ULONG_MAX == 0xffffffff) - typedef unsigned long U32; - #elif (USHRT_MAX == 0xffffffff) - typedef unsigned short U32; - #elif (UCHAR_MAX == 0xffffffff) - typedef unsigned char U32; - #else - #error "No valid definition of U32 available" - #endif - -#endif /* Linux kernel test */ - - -#endif /* NO_STAR_TYPES */ - - -#endif /* STAR_DUNDEE_TYPES */ - - diff --git a/spw_usb_driver_v2.63/lib/i386/spacewire_cuba_software b/spw_usb_driver_v2.63/lib/i386/spacewire_cuba_software deleted file mode 100755 index b688714265809f1a96871a0774c9e91bf18f3075..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 GIT binary patch literal 0 Hc$@ - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/wfdisplay/wfdisplay/QCustomPlot/changenotes.txt b/wfdisplay/wfdisplay/QCustomPlot/changenotes.txt deleted file mode 100644 --- a/wfdisplay/wfdisplay/QCustomPlot/changenotes.txt +++ /dev/null @@ -1,211 +0,0 @@ -#### Version released on [09.06.12] #### - - Quick Summary: - - Items (arrows, text,...) - - Layers (easier control over rendering order) - - New antialiasing system (Each objects controls own antialiasing with setAntialiased) - - Performance Improvements - - improved pixel-precise drawing - - easier shared library creation/usage - - Changes that (might) break backward compatibility: - - enum QCPGraph::ScatterSymbol was moved to QCP namespace (now QCP::ScatterSymbol). - This replace should fix your code: "QCPGraph::ss" -> "QCP::ss" - - enum QCustomPlot::AntialiasedElement and flag QCustomPlot::AntialiasedElements was moved to QCP namespace - This replace should fix your code: "QCustomPlot::ae" -> "QCP::ae" - - the meaning of QCustomPlot::setAntialiasedElements has changed slightly: It is now an override to force elements to be antialiased. If you want to force - elements to not be drawn antialiased, use the new setNotAntialiasedElements. If an element is mentioned in neither of those functions, it now controls - its antialiasing itself via its "setAntialiased" function(s). (e.g. QCPAxis::setAntialiased(bool), QCPAbstractPlottable::setAntialiased(bool), - QCPAbstractPlottable::setAntialiasedScatters(bool), etc.) - - QCPAxis::setTickVector and QCPAxis::setTickVectorLabels no longer take a pointer but a const reference of the respective QVector as parameter. - (handing over a pointer didn't give any noticeable performance benefits but was inconsistent with the rest of the interface) - - Equally QCPAxis::tickVector and QCPAxis::tickVectorLabels don't return by pointer but by value now - - QCustomPlot::savePngScaled was removed, its purpose is now included as optional parameter "scale" of savePng. - - If you have derived from QCPAbstractPlottable: all selectTest functions now consistently take the argument "const QPointF &pos" which is the test point in pixel coordinates. - (the argument there was "double key, double value" in plot coordinates, before). - - QCPAbstractPlottable, QCPAxis and QCPLegend now inherit from QCPLayerable - - If you have derived from QCPAbstractPlottable: the draw method signature has changed from "draw (..) const" to "draw (..)", i.e. the method - is not const anymore. This allows the draw function of your plottable to perform buffering operations, if necessary. - - Added features: - - Item system: QCPAbstractItem, QCPItemAnchor, QCPItemPosition, QCPLineEnding. Allows placing of lines, arrows, text, pixmaps etc. - - New Items: QCPItemStraightLine, QCPItemLine, QCPItemCurve, QCPItemEllipse, QCPItemRect, QCPItemPixmap, QCPItemText, QCPItemBracket, QCPItemTracer - - QCustomPlot::addItem/itemCount/item/removeItem/selectedItems - - signals QCustomPlot::itemClicked/itemDoubleClicked - - the QCustomPlot interactions property now includes iSelectItems (for selection of QCPAbstractItem) - - QCPLineEnding. Represents the different styles a line/curve can end (e.g. different arrows, circle, square, bar, etc.), see e.g. QCPItemCurve::setHead - - Layer system: QCPLayerable, QCPLayer. Allows more sophisticated control over drawing order and a kind of grouping. - - QCPAbstractPlottable, QCPAbstractItem, QCPAxis, QCPGrid, QCPLegend are layerables and derive from QCPLayerable - - QCustomPlot::addLayer/moveLayer/removeLayer/setCurrentLayer/layer/currentLayer/layerCount - - Initially there are three layers: "grid", "main", and "axes". The "main" layer is initially empty and set as current layer, so new plottables/items are put there. - - QCustomPlot::viewport now makes the previously inaccessible viewport rect read-only-accessible (needed that for item-interface) - - PNG export now allows transparent background by calling QCustomPlot::setColor(Qt::transparent) before savePng - - QCPStatisticalBox outlier symbols may now be all scatter symbols, not only hardcoded circles. - - perfect precision of scatter symbol/error bar drawing and clipping in both antialiased and non-antialiased mode, by introducing QCPPainter - that works around some QPainter bugs/inconveniences. Further, more complex symbols like ssCrossSquare used to look crooked, now they look good. - - new antialiasing control system: Each drawing element now has its own "setAntialiased" function to control whether it is drawn antialiased. - - QCustomPlot::setAntialiasedElements and QCustomPlot::setNotAntialiasedElements can be used to override the individual settings. - - Subclasses of QCPAbstractPlottable can now use the convenience functions like applyFillAntialiasingHint or applyScattersAntialiasingHint to - easily make their drawing code comply with the overall antialiasing system. - - QCustomPlot::setNoAntialiasingOnDrag allows greatly improved performance and responsiveness by temporarily disabling all antialiasing while - the user is dragging axis ranges - - QCPGraph can now show scatter symbols at data points and hide its line (see QCPGraph::setScatterStyle, setScatterSize, setScatterPixmap, setLineStyle) - - Grid drawing code was sourced out from QCPAxis to QCPGrid. QCPGrid is mainly an internal class and every QCPAxis owns one. The grid interface still - works through QCPAxis and hasn't changed. The separation allows the grid to be drawn on a different layer as the axes, such that e.g. a graph can - be above the grid but below the axes. - - QCustomPlot::hasPlottable(plottable), returns whether the QCustomPlot contains the plottable - - QCustomPlot::setPlottingHint/setPlottingHints, plotting hints control details about the plotting quality/speed - - export to jpg and bmp added (QCustomPlot::saveJpg/saveBmp), as well as control over compression quality for png and jpg - - multi-select-modifier may now be specified with QCustomPlot::setMultiSelectModifier and is not fixed to Ctrl anymore - - Bugfixes: - - fixed QCustomPlot ignores replot after it had size (0,0) even if size becomes valid again - - on Windows, a repaint used to be delayed during dragging/zooming of a complex plot, until the drag operation was done. - This was fixed, i.e. repaints are forced after a replot() call. See QCP::phForceRepaint and setPlottingHints. - - when using the raster paintengine and exporting to scaled PNG, pen widths are now scaled correctly (QPainter bug workaround via QCPPainter) - - PDF export now respects QCustomPlot background color (QCustomPlot::setColor), also Qt::transparent - - fixed a bug on QCPBars and QCPStatisticalBox where auto-rescaling of axis would fail when all data is very small (< 1e-11) - - fixed mouse event propagation bug that prevented range dragging from working on KDE (GNU/Linux) - - fixed a compiler warning on 64-bit systems due to pointer cast to int instead of quintptr in a qDebug output - - Other: - - Added support for easier shared library creation (including examples for compiling and using QCustomPlot as shared library) - - QCustomPlot now has the Qt::WA_OpaquePaintEvent widget attribute (gives slightly improved performance). - - QCP::aeGraphs (enum QCP::AntialiasedElement, previously QCustomPlot::aeGraphs) has been marked deprecated since version 02.02.12 and - was now removed. Use QCP::aePlottables instead. - - optional performance-quality-tradeoff for solid graph lines (see QCustomPlot::setPlottingHints). - - marked data classes and QCPRange as Q_MOVABLE_TYPE - - replaced usage of own macro FUNCNAME with Qt macro Q_FUNC_INFO - - QCustomPlot now returns a minimum size hint of 50*50 - -#### Version released on [31.03.12] #### - - Changes that (might) break backward compatibility: - - QCPAbstractLegendItem now inherits from QObject - - mousePress, mouseMove and mouseRelease signals are now emitted before and not after any QCustomPlot processing (range dragging, selecting, etc.) - - Added features: - - Interaction system: now allows selecting of objects like plottables, axes, legend and plot title, see QCustomPlot::setInteractions documentation - - Interaction system for plottables: - - setSelectable, setSelected, setSelectedPen, setSelectedBrush, selectTest on QCPAbstractPlottable and all derived plottables - - setSelectionTolerance on QCustomPlot - - selectedPlottables and selectedGraphs on QCustomPlot (returns the list of currently selected plottables/graphs) - - Interaction system for axes: - - setSelectable, setSelected, setSelectedBasePen, setSelectedTickPen, setSelectedSubTickPen, setSelectedLabelFont, setSelectedTickLabelFont, - setSelectedLabelColor, setSelectedTickLabelColor, selectTest on QCPAxis - - selectedAxes on QCustomPlot (returns a list of the axes that currently have selected parts) - - Interaction system for legend: - - setSelectable, setSelected, setSelectedBorderPen, setSelectedIconBorderPen, setSelectedBrush, setSelectedFont, setSelectedTextColor, selectedItems on QCPLegend - - setSelectedFont, setSelectedTextColor, setSelectable, setSelected on QCPAbstractLegendItem - - selectedLegends on QCustomPlot - - Interaction system for title: - - setSelectedTitleFont, setSelectedTitleColor, setTitleSelected on QCustomPlot - - new signals in accordance with the interaction system: - - selectionChangedByUser on QCustomPlot - - selectionChanged on QCPAbstractPlottable - - selectionChanged on QCPAxis - - selectionChanged on QCPLegend and QCPAbstractLegendItem - - plottableClick, legendClick, axisClick, titleClick, plottableDoubleClick, legendDoubleClick, axisDoubleClick, titleDoubleClick on QCustomPlot - - QCustomPlot::deselectAll (deselects everything, i.e. axes and plottables) - - QCPAbstractPlottable::pixelsToCoords (inverse function to the already existing coordsToPixels function) - - QCPRange::contains(double value) - - QCPAxis::setLabelColor and setTickLabelColor - - QCustomPlot::setTitleColor - - QCustomPlot now emits beforeReplot and afterReplot signals. Note that it is safe to make two customPlots mutually call eachothers replot functions - in one of these slots, it will not cause an infinite loop. (usefull for synchronizing axes ranges between two customPlots, because setRange alone doesn't replot) - - If the Qt version is 4.7 or greater, the tick label strings in date-time-mode now support sub-second accuracy (e.g. with format like "hh:mm:ss.zzz"). - - Bugfixes: - - tick labels/margins should no longer oscillate by one pixel when dragging range or replotting repeatedly while changing e.g. data. This - was caused by a bug in Qt's QFontMetrics::boundingRect function when the font has an integer point size (probably some rounding problem). - The fix hence consists of creating a temporary font (only for bounding-box calculation) which is 0.05pt larger and thus avoiding the - jittering rounding outcome. - - tick label, axis label and plot title colors used to be undefined. This was fixed by providing explicit color properties. - - Other: - - fixed some glitches in the documentation - - QCustomPlot::replot and QCustomPlot::rescaleAxes are now slots - -#### Version released on [02.02.12] #### - - Changes that break backward compatibility: - - renamed all secondary classes from QCustomPlot[...] to QCP[...]: - QCustomPlotAxis -> QCPAxis - QCustomPlotGraph -> QCPGraph - QCustomPlotRange -> QCPRange - QCustomPlotData -> QCPData - QCustomPlotDataMap -> QCPDataMap - QCustomPlotLegend -> QCPLegend - QCustomPlotDataMapIterator -> QCPDataMapIterator - QCustomPlotDataMutableMapIterator -> QCPDataMutableMapIterator - A simple search and replace on all code files should make your code run again, e.g. consider the regex "QCustomPlot(?=[AGRDL])" -> "QCP". - Make sure not to just replace "QCustomPlot" with "QCP" because the main class QCustomPlot hasn't changed to QCP. - This change was necessary because class names became unhandy, pardon my bad naming decision in the beginning. - - QCPAxis::tickLength() and QCPAxis::subTickLength() now each split into two functions for inward and outward ticks (tickLengthIn/tickLengthOut). - - QCPLegend now uses QCPAbstractLegendItem to carry item data (before, the legend was passed QCPGraphs directly) - - QCustomPlot::addGraph() now doesn't return the index of the created graph anymore, but a pointer to the created QCPGraph. - - QCustomPlot::setAutoAddGraphToLegend is replaced by setAutoAddPlottableToLegend - - Added features: - - Reversed axis range with QCPAxis::setRangeReversed(bool) - - Tick labels are now only drawn if not clipped by the viewport (widget border) on the sides (e.g. left and right on a horizontal axis). - - Zerolines. Like grid lines only with a separate pen (QCPAxis::setZeroLinePen), at tick position zero. - - Outward ticks. QCPAxis::setTickLength/setSubTickLength now accepts two arguments for inward and outward tick length. This doesn't break - backward compatibility because the second argument (outward) has default value zero and thereby a call with one argument hasn't changed its meaning. - - QCPGraph now inherits from QCPAbstractPlottable - - QCustomPlot::addPlottable/plottable/removePlottable/clearPlottables added to interface with the new QCPAbstractPlottable-based system. The simpler interface - which only acts on QCPGraphs (addGraph, graph, removeGraph, etc.) was adapted internally and is kept for backward compatibility and ease of use. - - QCPLegend items for plottables (e.g. graphs) can automatically wrap their texts to fit the widths, see QCPLegend::setMinimumSize and QCPPlottableLegendItem::setTextWrap. - - QCustomPlot::rescaleAxes. Adapts axis ranges to show all plottables/graphs, by calling QCPAbstractPlottable::rescaleAxes on all plottables in the plot. - - QCPCurve. For plotting of parametric curves. - - QCPBars. For plotting of bar charts. - - QCPStatisticalBox. For statistical box plots. - - Bugfixes: - - Fixed QCustomPlot::removeGraph(int) not being able to remove graph index 0 - - made QCustomPlot::replot() abort painting when painter initialization fails (e.g. because width/height of QCustomPlot is zero) - - The distance of the axis label from the axis ignored the tick label padding, this could have caused overlapping axis labels and tick labels - - fixed memory leak in QCustomPlot (dtor didn't delete legend) - - fixed bug that prevented QCPAxis::setRangeLower/Upper from setting the value to exactly 0. - - Other: - - Changed default error bar handle size (QCustomPlotGraph::setErrorBarSize) from 4 to 6. - - Removed QCustomPlotDataFetcher. Was deprecated and not used class. - - Extended documentation, especially class descriptions. - -#### Version released on [15.01.12] #### - - Changes that (might) break backward compatibility: - - QCustomPlotGraph now inherits from QObject - - Added features: - - Added axis background pixmap (QCustomPlot::setAxisBackground, setAxisBackgroundScaled, setAxisBackgroundScaledMode) - - Added width and height parameter on PDF export function QCustomPlot::savePdf(). This now allows PDF export to - have arbitrary dimensions, independent of the current geometry of the QCustomPlot. - - Added overload of QCustomPlot::removeGraph that takes QCustomPlotGraph* as parameter, instead the index of the graph - - Added all enums to the Qt meta system via Q_ENUMS(). The enums can now be transformed - to QString values easily with the Qt meta system, which makes saving state e.g. as XML - significantly nicer. - - added typedef QMapIterator QCustomPlotDataMapIterator - and typedef QMutableMapIterator QCustomPlotDataMutableMapIterator - for improved information hiding, when using iterators outside QCustomPlot code - - Bugfixes: - - Fixed savePngScaled. Axis/label drawing functions used to reset the painter transform - and thereby break savePngScaled. Now they buffer the current transform and restore it afterwards. - - Fixed some glitches in the doxygen comments (affects documentation only) - - Other: - - Changed the default tickLabelPadding of top axis from 3 to 6 pixels. Looks better. - - Changed the default QCustomPlot::setAntialiasedElements setting: Graph fills are now antialiased - by default. That's a bit slower, but makes fill borders look better. - -#### Version released on [19.11.11] #### - - Changes that break backward compatibility: - - QCustomPlotAxis: tickFont and setTickFont renamed to tickLabelFont and setTickLabelFont (for - naming consistency) - - Other: - - QCustomPlotAxis: Added rotated tick labels, see setTickLabelRotation - diff --git a/wfdisplay/wfdisplay/QCustomPlot/qcustomplot.cpp b/wfdisplay/wfdisplay/QCustomPlot/qcustomplot.cpp deleted file mode 100644 --- a/wfdisplay/wfdisplay/QCustomPlot/qcustomplot.cpp +++ /dev/null @@ -1,15033 +0,0 @@ -/*************************************************************************** -** ** -** QCustomPlot, a simple to use, modern plotting widget for Qt ** -** Copyright (C) 2012 Emanuel Eichhammer ** -** ** -** This program is free software: you can redistribute it and/or modify ** -** it under the terms of the GNU General Public License as published by ** -** the Free Software Foundation, either version 3 of the License, or ** -** (at your option) any later version. ** -** ** -** This program is distributed in the hope that it will be useful, ** -** but WITHOUT ANY WARRANTY; without even the implied warranty of ** -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** -** GNU General Public License for more details. ** -** ** -** You should have received a copy of the GNU General Public License ** -** along with this program. If not, see http://www.gnu.org/licenses/. ** -** ** -**************************************************************************** -** Author: Emanuel Eichhammer ** -** Website/Contact: http://www.WorksLikeClockwork.com/ ** -** Date: 09.06.12 ** -****************************************************************************/ - -/*! \mainpage %QCustomPlot Documentation - - Below is a brief overview of and guide to the classes and their relations. If you are new to - QCustomPlot and just want to start using it, it's recommended to look at the examples/tutorials - at - - http://www.WorksLikeClockWork.com/index.php/components/qt-plotting-widget - - This documentation is especially helpful when you're familiar with the basic concept of how to use - %QCustomPlot and you wish to learn more about specific functionality. - - \section simpleoverview Simplified Class Overview - - \image latex ClassesOverviewSimplified.png "" width=1.2\textwidth - \image html ClassesOverviewSimplified.png -

    Simplified diagram of most important classes, view the \ref classoverview "Class Overview" to see a full overview.
    - - The central widget which displays the plottables and axes on its surface is QCustomPlot. Usually, - you don't create the axes yourself, but you use the ones already inside every QCustomPlot - instance (xAxis, yAxis, xAxis2, yAxis2). - - \section plottables Plottables - - \a Plottables are classes that display any kind of data inside the QCustomPlot. They all derive - from QCPAbstractPlottable. For example, the QCPGraph class is a plottable that displays a graph - inside the plot with different line styles, scatter styles, filling etc. - - Since plotting graphs is such a dominant use case, QCustomPlot has a special interface for working - with QCPGraph plottables, that makes it very easy to handle them:\n - You create a new graph with QCustomPlot::addGraph and access them with QCustomPlot::graph. - - For all other plottables, you need to use the normal plottable interface:\n - First, you create an instance of the plottable you want, e.g. - \code - QCPCurve *newCurve = new QCPCurve(customPlot->xAxis, customPlot->yAxis);\endcode - add it to the customPlot with QCustomPlot::addPlottable: - \code - customPlot->addPlottable(newCurve);\endcode - and then modify the properties of the newly created plottable via newCurve. - - Plottables (including graphs) can be retrieved via QCustomPlot::plottable. Since the return type - of that function is the abstract base class of all plottables, QCPAbstractPlottable, you will - probably want to qobject_cast (or dynamic_cast) the returned pointer to the respective plottable - subclass. (As usual, if the cast returns zero, the plottable wasn't of that specific subclass.) - - All further interfacing with plottables (e.g how to set data) is specific to the plottable type. - See the documentations of the subclasses: QCPGraph, QCPCurve, QCPBars, QCPStatisticalBox. - - \section axes Controlling the Axes - - As mentioned, QCustomPlot has four axes by default: \a xAxis (bottom), \a yAxis (left), \a xAxis2 - (top), \a yAxis2 (right). - - Their range is handled by the simple QCPRange class. You can set the range with the - QCPAxis::setRange function. By default, the axes represent a linear scale. To set a logarithmic - scale, set QCPAxis::setScaleType to QCPAxis::stLogarithmic. The logarithm base can be set freely - with QCPAxis::setScaleLogBase. - - By default, an axis automatically creates and labels ticks in a sensible manner, i.e. with a tick - interval that's pleasing to the viewer. See the following functions for tick manipulation:\n - QCPAxis::setTicks, QCPAxis::setAutoTicks, QCPAxis::setAutoTickCount, QCPAxis::setAutoTickStep, - QCPAxis::setTickLabels, QCPAxis::setTickLabelType, QCPAxis::setTickLabelRotation, - QCPAxis::setTickStep, QCPAxis::setTickLength,... - - Each axis can be given an axis label (e.g. "Voltage [mV]") with QCPAxis::setLabel. - - The distance of an axis backbone to the respective QCustomPlot widget border is called its margin. - Normally, the margins are calculated automatically. To change this, set QCustomPlot::setAutoMargin - to false and set the margins manually with QCustomPlot::setMargin. - - \section legend Plot Legend - - Every QCustomPlot owns a QCPLegend (as \a legend). That's a small window inside the plot which - lists the plottables with an icon of the plottable line/symbol and a description. The Description - is retrieved from the plottable name (QCPAbstractPlottable::setName). Plottables can be added and - removed from the legend via \ref QCPAbstractPlottable::addToLegend and \ref - QCPAbstractPlottable::removeFromLegend. By default, adding a plottable to QCustomPlot - automatically adds it to the legend, too. This behaviour can be modified with the - QCustomPlot::setAutoAddPlottableToLegend property. - - The QCPLegend provides an interface to access, add and remove legend items directly, too. See - QCPLegend::item, QCPLegend::itemWithPlottable, QCPLegend::addItem, QCPLegend::removeItem for - example. - - \section userinteraction User Interactions - - QCustomPlot currently supports dragging axis ranges with the mouse (\ref - QCustomPlot::setRangeDrag), zooming axis ranges with the mouse wheel (\ref - QCustomPlot::setRangeZoom) and a complete selection mechanism of most objects. - - The availability of these interactions is controlled with \ref QCustomPlot::setInteractions. For - details about the interaction system, see the documentation there. - - Further, QCustomPlot always emits corresponding signals, when objects are clicked or - doubleClicked. See \ref QCustomPlot::plottableClick, \ref QCustomPlot::plottableDoubleClick - and \ref QCustomPlot::axisClick for example. - - \section items Items - - Apart from plottables there is another category of plot objects that are important: Items. The - base class of all items is QCPAbstractItem. An item sets itself apart from plottables in that - it's not necessarily bound to any axes. This means it may also be positioned in absolute pixel - coordinates or placed at a relative position on the axis rect. Further it usually doesn't - represent data directly but acts as decoration, emphasis, description etc. - - Multiple items can be arranged in a parent-child-hierarchy allowing for dynamical behaviour. For - example, you could place the head of an arrow at a certain plot coordinate, so it always points - to some important part of your data. The tail of the arrow can be fixed at a text label item - which always resides in the top center of the axis rect (independent of where the user drags the - axis ranges). - - For a more detailed introduction, see the QCPAbstractItem documentation, and from there the - documentations of the individual built-in items, to find out how to use them. - - \section performancetweaks Performance Tweaks - - Although QCustomPlot is quite fast, some features like semi-transparent fills and antialiasing - can cause a significant slow down. Here are some thoughts on how to increase performance. By far - the most time is spent in the drawing functions, specifically the drawing of graphs. For maximum - performance, consider the following (most recommended/effective measures first): - - \li use Qt 4.8.0 and up. Performance has doubled or tripled with respect to Qt 4.7.4. However they broke QPainter, - drawing pixel precise things, e.g. scatters, isn't possible with Qt 4.8.0/1. So it's a performance vs. plot - quality tradeoff when switching to Qt 4.8. - \li To increase responsiveness during dragging, consider setting \ref QCustomPlot::setNoAntialiasingOnDrag to true. - \li On X11 (linux), avoid the (slow) native drawing system, use raster by supplying - "-graphicssystem raster" as command line argument or calling QApplication::setGraphicsSystem("raster") - before creating the QApplication object. - \li On all operating systems, use OpenGL hardware acceleration by supplying "-graphicssystem - opengl" as command line argument or calling QApplication::setGraphicsSystem("opengl"). If OpenGL - is available, this will slightly decrease the quality of antialiasing, but extremely increase - performance especially with alpha (semi-transparent) fills, much antialiasing and a large - QCustomPlot drawing surface. Note however, that the maximum frame rate might be constrained by - the vertical sync frequency of your monitor (VSync can be disabled in the graphics card driver - configuration). So for simple plots (where the potential framerate is far above 60 frames per - second), OpenGL acceleration might achieve numerically lower frame rates than the other - graphics systems, because they are not capped at the VSync frequency. - \li Avoid any kind of alpha (transparency), especially in fills - \li Avoid any kind of antialiasing, especially in graph lines (see QCustomPlot::setNotAntialiasedElements) - \li Avoid repeatedly setting the complete data set with QCPGraph::setData. Use QCPGraph::addData instead, if most - data points stay unchanged, e.g. in a running measurement. - \li Set the \a copy parameter of the setData functions to false, so only pointers get - transferred. (Relevant only if preparing data maps with a large number of points, i.e. over 10000) -*/ - -/*! \page classoverview Class Overview - - \image latex ClassesOverview.png "Overview of all classes and their relations" width=1.2\textwidth - \image html ClassesOverview.png "Overview of all classes and their relations" - -*/ - -#include "qcustomplot.h" - -// ================================================================================ -// =================== QCPData -// ================================================================================ - -/*! \class QCPData - \brief Holds the data of one single data point for QCPGraph. - - The stored data is: - \li \a key: coordinate on the key axis of this data point - \li \a value: coordinate on the value axis of this data point - \li \a keyErrorMinus: negative error in the key dimension (for error bars) - \li \a keyErrorPlus: positive error in the key dimension (for error bars) - \li \a valueErrorMinus: negative error in the value dimension (for error bars) - \li \a valueErrorPlus: positive error in the value dimension (for error bars) - - \see QCPDataMap -*/ - -/*! - Constructs a data point with key, value and all errors set to zero. -*/ -QCPData::QCPData() : - key(0), - value(0), - keyErrorPlus(0), - keyErrorMinus(0), - valueErrorPlus(0), - valueErrorMinus(0) -{ -} - -/*! - Constructs a data point with the specified \a key and \a value. All errors are set to zero. -*/ -QCPData::QCPData(double key, double value) : - key(key), - value(value), - keyErrorPlus(0), - keyErrorMinus(0), - valueErrorPlus(0), - valueErrorMinus(0) -{ -} - -// ================================================================================ -// =================== QCPCurveData -// ================================================================================ - -/*! \class QCPCurveData - \brief Holds the data of one single data point for QCPCurve. - - The stored data is: - \li \a t: the free parameter of the curve at this curve point (cp. the mathematical vector (x(t), y(t))) - \li \a key: coordinate on the key axis of this curve point - \li \a value: coordinate on the value axis of this curve point - - \see QCPCurveDataMap -*/ - -/*! - Constructs a curve data point with t, key and value set to zero. -*/ -QCPCurveData::QCPCurveData() : - t(0), - key(0), - value(0) -{ -} - -/*! - Constructs a curve data point with the specified \a t, \a key and \a value. -*/ -QCPCurveData::QCPCurveData(double t, double key, double value) : - t(t), - key(key), - value(value) -{ -} - - -// ================================================================================ -// =================== QCPBarData -// ================================================================================ - -/*! \class QCPBarData - \brief Holds the data of one single data point (one bar) for QCPBars. - - The stored data is: - \li \a key: coordinate on the key axis of this bar - \li \a value: height coordinate on the value axis of this bar - - \see QCPBarDataaMap -*/ - -/*! - Constructs a bar data point with key and value set to zero. -*/ -QCPBarData::QCPBarData() : - key(0), - value(0) -{ -} - -/*! - Constructs a bar data point with the specified \a key and \a value. -*/ -QCPBarData::QCPBarData(double key, double value) : - key(key), - value(value) -{ -} - -// ================================================================================ -// =================== QCPGraph -// ================================================================================ - -/*! \class QCPGraph - \brief A plottable representing a graph in a plot. - - Usually QCustomPlot creates it internally via QCustomPlot::addGraph and the resulting instance is - accessed via QCustomPlot::graph. - - To plot data, assign it with the \ref setData or \ref addData functions. - - \section appearance Changing the appearance - - The appearance of the graph is mainly determined by the line style, scatter style, brush and pen - of the graph (\ref setLineStyle, \ref setScatterStyle, \ref setBrush, \ref setPen). - - \subsection filling Filling under or between graphs - - QCPGraph knows two types of fills: Normal graph fills towards the zero-value-line parallel to - the key axis of the graph, and fills between two graphs, called channel fills. To enable a fill, - just set a brush with \ref setBrush which is neither Qt::NoBrush nor fully transparent. - - By default, a normal fill towards the zero-value-line will be drawn. To set up a channel fill - between this graph and another one, call \ref setChannelFillGraph with the other graph as - parameter. - - \see QCustomPlot::addGraph, QCustomPlot::graph, QCPLegend::addGraph -*/ - -/*! - Constructs a graph which uses \a keyAxis as its key axis ("x") and \a valueAxis as its value - axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance and not have - the same orientation. If either of these restrictions is violated, a corresponding message is - printed to the debug output (qDebug), the construction is not aborted, though. - - The constructed QCPGraph can be added to the plot with QCustomPlot::addPlottable, QCustomPlot - then takes ownership of the graph. - - To directly create a graph inside a plot, you can also use the simpler QCustomPlot::addGraph function. -*/ -QCPGraph::QCPGraph(QCPAxis *keyAxis, QCPAxis *valueAxis) : - QCPAbstractPlottable(keyAxis, valueAxis) -{ - mData = new QCPDataMap; - - setPen(QPen(Qt::blue)); - setErrorPen(QPen(Qt::black)); - setBrush(Qt::NoBrush); - setSelectedPen(QPen(QColor(80, 80, 255), 2.5)); - setSelectedBrush(Qt::NoBrush); - - setLineStyle(lsLine); - setScatterStyle(QCP::ssNone); - setScatterSize(6); - setErrorType(etNone); - setErrorBarSize(6); - setErrorBarSkipSymbol(true); - setChannelFillGraph(0); -} - -QCPGraph::~QCPGraph() -{ - if (mParentPlot) - { - // if another graph has a channel fill towards this graph, set it to zero - for (int i=0; igraphCount(); ++i) - { - if (mParentPlot->graph(i)->channelFillGraph() == this) - mParentPlot->graph(i)->setChannelFillGraph(0); - } - } - delete mData; -} - -/*! - Replaces the current data with the provided \a data. - - If \a copy is set to true, data points in \a data will only be copied. if false, the graph - takes ownership of the passed data and replaces the internal data pointer with it. This is - significantly faster than copying for large datasets. -*/ -void QCPGraph::setData(QCPDataMap *data, bool copy) -{ - if (copy) - { - *mData = *data; - } else - { - delete mData; - mData = data; - } -} - -/*! \overload - - Replaces the current data with the provided points in \a key and \a value pairs. The provided - vectors should have equal length. Else, the number of added points will be the size of the - smallest vector. -*/ -void QCPGraph::setData(const QVector &key, const QVector &value) -{ - mData->clear(); - int n = key.size(); - n = qMin(n, value.size()); - QCPData newData; - for (int i=0; iinsertMulti(newData.key, newData); - } -} - -/*! - Replaces the current data with the provided points in \a key and \a value pairs. Additionally the - symmetrical value error of the data points are set to the values in \a valueError. - For error bars to show appropriately, see \ref setErrorType. - The provided vectors should have equal length. Else, the number of added points will be the size of the - smallest vector. - - For asymmetrical errors (plus different from minus), see the overloaded version of this function. -*/ -void QCPGraph::setDataValueError(const QVector &key, const QVector &value, const QVector &valueError) -{ - mData->clear(); - int n = key.size(); - n = qMin(n, value.size()); - n = qMin(n, valueError.size()); - QCPData newData; - for (int i=0; iinsertMulti(key[i], newData); - } -} - -/*! - \overload - Replaces the current data with the provided points in \a key and \a value pairs. Additionally the - negative value error of the data points are set to the values in \a valueErrorMinus, the positive - value error to \a valueErrorPlus. - For error bars to show appropriately, see \ref setErrorType. - The provided vectors should have equal length. Else, the number of added points will be the size of the - smallest vector. -*/ -void QCPGraph::setDataValueError(const QVector &key, const QVector &value, const QVector &valueErrorMinus, const QVector &valueErrorPlus) -{ - mData->clear(); - int n = key.size(); - n = qMin(n, value.size()); - n = qMin(n, valueErrorMinus.size()); - n = qMin(n, valueErrorPlus.size()); - QCPData newData; - for (int i=0; iinsertMulti(key[i], newData); - } -} - -/*! - Replaces the current data with the provided points in \a key and \a value pairs. Additionally the - symmetrical key error of the data points are set to the values in \a keyError. - For error bars to show appropriately, see \ref setErrorType. - The provided vectors should have equal length. Else, the number of added points will be the size of the - smallest vector. - - For asymmetrical errors (plus different from minus), see the overloaded version of this function. -*/ -void QCPGraph::setDataKeyError(const QVector &key, const QVector &value, const QVector &keyError) -{ - mData->clear(); - int n = key.size(); - n = qMin(n, value.size()); - n = qMin(n, keyError.size()); - QCPData newData; - for (int i=0; iinsertMulti(key[i], newData); - } -} - -/*! - \overload - Replaces the current data with the provided points in \a key and \a value pairs. Additionally the - negative key error of the data points are set to the values in \a keyErrorMinus, the positive - key error to \a keyErrorPlus. - For error bars to show appropriately, see \ref setErrorType. - The provided vectors should have equal length. Else, the number of added points will be the size of the - smallest vector. -*/ -void QCPGraph::setDataKeyError(const QVector &key, const QVector &value, const QVector &keyErrorMinus, const QVector &keyErrorPlus) -{ - mData->clear(); - int n = key.size(); - n = qMin(n, value.size()); - n = qMin(n, keyErrorMinus.size()); - n = qMin(n, keyErrorPlus.size()); - QCPData newData; - for (int i=0; iinsertMulti(key[i], newData); - } -} - -/*! - Replaces the current data with the provided points in \a key and \a value pairs. Additionally the - symmetrical key and value errors of the data points are set to the values in \a keyError and \a valueError. - For error bars to show appropriately, see \ref setErrorType. - The provided vectors should have equal length. Else, the number of added points will be the size of the - smallest vector. - - For asymmetrical errors (plus different from minus), see the overloaded version of this function. -*/ -void QCPGraph::setDataBothError(const QVector &key, const QVector &value, const QVector &keyError, const QVector &valueError) -{ - mData->clear(); - int n = key.size(); - n = qMin(n, value.size()); - n = qMin(n, valueError.size()); - n = qMin(n, keyError.size()); - QCPData newData; - for (int i=0; iinsertMulti(key[i], newData); - } -} - -/*! - \overload - Replaces the current data with the provided points in \a key and \a value pairs. Additionally the - negative key and value errors of the data points are set to the values in \a keyErrorMinus and \a valueErrorMinus. The positive - key and value errors are set to the values in \a keyErrorPlus \a valueErrorPlus. - For error bars to show appropriately, see \ref setErrorType. - The provided vectors should have equal length. Else, the number of added points will be the size of the - smallest vector. -*/ -void QCPGraph::setDataBothError(const QVector &key, const QVector &value, const QVector &keyErrorMinus, const QVector &keyErrorPlus, const QVector &valueErrorMinus, const QVector &valueErrorPlus) -{ - mData->clear(); - int n = key.size(); - n = qMin(n, value.size()); - n = qMin(n, valueErrorMinus.size()); - n = qMin(n, valueErrorPlus.size()); - n = qMin(n, keyErrorMinus.size()); - n = qMin(n, keyErrorPlus.size()); - QCPData newData; - for (int i=0; iinsertMulti(key[i], newData); - } -} - - -/*! - Sets how the single data points are connected in the plot or how they are represented visually - apart from the scatter symbol. For scatter-only plots, set \a ls to \ref lsNone and \ref - setScatterStyle to the desired scatter style. - - \see setScatterStyle -*/ -void QCPGraph::setLineStyle(LineStyle ls) -{ - mLineStyle = ls; -} - -/*! - Sets the visual appearance of single data points in the plot. If set to \ref QCP::ssNone, no scatter points - are drawn (e.g. for line-only-plots with appropriate line style). - - \see ScatterStyle, setLineStyle -*/ -void QCPGraph::setScatterStyle(QCP::ScatterStyle ss) -{ - mScatterStyle = ss; -} - -/*! - This defines how big (in pixels) single scatters are drawn, if scatter style (\ref - setScatterStyle) isn't \ref QCP::ssNone, \ref QCP::ssDot or \ref QCP::ssPixmap. Floating point values are - allowed for fine grained control over optical appearance with antialiased painting. - - \see ScatterStyle -*/ -void QCPGraph::setScatterSize(double size) -{ - mScatterSize = size; -} - -/*! - If the scatter style (\ref setScatterStyle) is set to ssPixmap, this function defines the QPixmap - that will be drawn centered on the data point coordinate. - - \see ScatterStyle -*/ -void QCPGraph::setScatterPixmap(const QPixmap &pixmap) -{ - mScatterPixmap = pixmap; -} - -/*! - Sets which kind of error bars (Key Error, Value Error or both) should be drawn on each data - point. If you set \a errorType to something other than \ref etNone, make sure to actually pass - error data via the specific setData functions along with the data points (e.g. \ref - setDataValueError, \ref setDataKeyError, \ref setDataBothError). - - \see ErrorType -*/ -void QCPGraph::setErrorType(ErrorType errorType) -{ - mErrorType = errorType; -} - -/*! - Sets the pen with which the error bars will be drawn. - \see setErrorBarSize, setErrorType -*/ -void QCPGraph::setErrorPen(const QPen &pen) -{ - mErrorPen = pen; -} - -/*! - Sets the width of the handles at both ends of an error bar in pixels. -*/ -void QCPGraph::setErrorBarSize(double size) -{ - mErrorBarSize = size; -} - -/*! - If \a enabled is set to true, the error bar will not be drawn as a solid line under the scatter symbol but - leave some free space around the symbol. - - This feature uses the current scatter size (\ref setScatterSize) to determine the size of the - area to leave blank. So when drawing Pixmaps as scatter points (\ref QCP::ssPixmap), the scatter size - must be set manually to a value corresponding to the size of the Pixmap, if the error bars should - leave gaps to its boundaries. -*/ -void QCPGraph::setErrorBarSkipSymbol(bool enabled) -{ - mErrorBarSkipSymbol = enabled; -} - -/*! - Sets the target graph for filling the area between this graph and \a targetGraph with the current - brush (\ref setBrush). - - When \a targetGraph is set to 0, a normal graph fill will be produced. This means, when the brush - is not Qt::NoBrush or fully transparent, a fill all the way to the zero-value-line parallel to - the key axis of this graph will be drawn. To disable any filling, set the brush to Qt::NoBrush. - \see setBrush -*/ -void QCPGraph::setChannelFillGraph(QCPGraph *targetGraph) -{ - // prevent setting channel target to this graph itself: - if (targetGraph == this) - { - qDebug() << Q_FUNC_INFO << "targetGraph is this graph itself"; - mChannelFillGraph = 0; - return; - } - // prevent setting channel target to a graph not in the plot: - if (targetGraph && targetGraph->mParentPlot != mParentPlot) - { - qDebug() << Q_FUNC_INFO << "targetGraph not in same plot"; - mChannelFillGraph = 0; - return; - } - - mChannelFillGraph = targetGraph; -} - -/*! - Adds the provided data points in \a dataMap to the current data. - \see removeData -*/ -void QCPGraph::addData(const QCPDataMap &dataMap) -{ - mData->unite(dataMap); -} - -/*! \overload - Adds the provided single data point in \a data to the current data. - \see removeData -*/ -void QCPGraph::addData(const QCPData &data) -{ - mData->insertMulti(data.key, data); -} - -/*! \overload - Adds the provided single data point as \a key and \a value pair to the current data. - \see removeData -*/ -void QCPGraph::addData(double key, double value) -{ - QCPData newData; - newData.key = key; - newData.value = value; - mData->insertMulti(newData.key, newData); -} - -/*! \overload - Adds the provided data points as \a key and \a value pairs to the current data. - \see removeData -*/ -void QCPGraph::addData(const QVector &keys, const QVector &values) -{ - int n = qMin(keys.size(), values.size()); - QCPData newData; - for (int i=0; iinsertMulti(newData.key, newData); - } -} - -/*! - Removes all data points with keys smaller than \a key. - \see addData, clearData -*/ -void QCPGraph::removeDataBefore(double key) -{ - QCPDataMap::iterator it = mData->begin(); - while (it != mData->end() && it.key() < key) - it = mData->erase(it); -} - -/*! - Removes all data points with keys greater than \a key. - \see addData, clearData -*/ -void QCPGraph::removeDataAfter(double key) -{ - if (mData->isEmpty()) return; - QCPDataMap::iterator it = mData->upperBound(key); - while (it != mData->end()) - it = mData->erase(it); -} - -/*! - Removes all data points with keys between \a fromKey and \a toKey. - if \a fromKey is greater or equal to \a toKey, the function does nothing. To remove - a single data point with known key, use \ref removeData(double key). - - \see addData, clearData -*/ -void QCPGraph::removeData(double fromKey, double toKey) -{ - if (fromKey >= toKey || mData->isEmpty()) return; - QCPDataMap::iterator it = mData->upperBound(fromKey); - QCPDataMap::iterator itEnd = mData->upperBound(toKey); - while (it != itEnd) - it = mData->erase(it); -} - -/*! \overload - - Removes a single data point at \a key. If the position is not known with absolute precision, - consider using \ref removeData(double fromKey, double toKey) with a small fuzziness interval around - the suspected position, depeding on the precision with which the key is known. - - \see addData, clearData -*/ -void QCPGraph::removeData(double key) -{ - mData->remove(key); -} - -/*! - Removes all data points. - \see removeData, removeDataAfter, removeDataBefore -*/ -void QCPGraph::clearData() -{ - mData->clear(); -} - -/* inherits documentation from base class */ -double QCPGraph::selectTest(const QPointF &pos) const -{ - if (mData->isEmpty() || !mVisible) - return -1; - - return pointDistance(pos); -} - -/*! \overload - - Allows to define whether error bars are taken into consideration when determining the new axis - range. -*/ -void QCPGraph::rescaleAxes(bool onlyEnlarge, bool includeErrorBars) const -{ - rescaleKeyAxis(onlyEnlarge, includeErrorBars); - rescaleValueAxis(onlyEnlarge, includeErrorBars); -} - -/*! \overload - - Allows to define whether error bars (of kind \ref QCPGraph::etKey) are taken into consideration - when determining the new axis range. -*/ -void QCPGraph::rescaleKeyAxis(bool onlyEnlarge, bool includeErrorBars) const -{ - // this code is a copy of QCPAbstractPlottable::rescaleKeyAxis with the only change - // that getKeyRange is passed the includeErrorBars value. - if (mData->isEmpty()) return; - - SignDomain signDomain = sdBoth; - if (mKeyAxis->scaleType() == QCPAxis::stLogarithmic) - signDomain = (mKeyAxis->range().upper < 0 ? sdNegative : sdPositive); - - bool validRange; - QCPRange newRange = getKeyRange(validRange, signDomain, includeErrorBars); - - if (validRange) - { - if (onlyEnlarge) - { - if (mKeyAxis->range().lower < newRange.lower) - newRange.lower = mKeyAxis->range().lower; - if (mKeyAxis->range().upper > newRange.upper) - newRange.upper = mKeyAxis->range().upper; - } - mKeyAxis->setRange(newRange); - } -} - -/*! \overload - - Allows to define whether error bars (of kind \ref QCPGraph::etValue) are taken into consideration - when determining the new axis range. -*/ -void QCPGraph::rescaleValueAxis(bool onlyEnlarge, bool includeErrorBars) const -{ - // this code is a copy of QCPAbstractPlottable::rescaleValueAxis with the only change - // is that getValueRange is passed the includeErrorBars value. - if (mData->isEmpty()) return; - - SignDomain signDomain = sdBoth; - if (mValueAxis->scaleType() == QCPAxis::stLogarithmic) - signDomain = (mValueAxis->range().upper < 0 ? sdNegative : sdPositive); - - bool validRange; - QCPRange newRange = getValueRange(validRange, signDomain, includeErrorBars); - - if (validRange) - { - if (onlyEnlarge) - { - if (mValueAxis->range().lower < newRange.lower) - newRange.lower = mValueAxis->range().lower; - if (mValueAxis->range().upper > newRange.upper) - newRange.upper = mValueAxis->range().upper; - } - mValueAxis->setRange(newRange); - } -} - -/* inherits documentation from base class */ -void QCPGraph::draw(QCPPainter *painter) -{ - if (mKeyAxis->range().size() <= 0 || mData->isEmpty()) return; - if (mLineStyle == lsNone && mScatterStyle == QCP::ssNone) return; - - // allocate line and (if necessary) point vectors: - QVector *lineData = new QVector; - QVector *pointData = 0; - if (mScatterStyle != QCP::ssNone) - pointData = new QVector; - - // fill vectors with data appropriate to plot style: - getPlotData(lineData, pointData); - - // draw fill of graph: - drawFill(painter, lineData); - - // draw line: - if (mLineStyle == lsImpulse) - drawImpulsePlot(painter, lineData); - else if (mLineStyle != lsNone) - drawLinePlot(painter, lineData); // also step plots can be drawn as a line plot - - // draw scatters: - if (pointData) - drawScatterPlot(painter, pointData); - - // free allocated line and point vectors: - delete lineData; - if (pointData) - delete pointData; -} - -/* inherits documentation from base class */ -void QCPGraph::drawLegendIcon(QCPPainter *painter, const QRect &rect) const -{ - // draw fill: - if (mBrush.style() != Qt::NoBrush) - { - applyFillAntialiasingHint(painter); - painter->fillRect(QRectF(rect.left(), rect.top()+rect.height()/2.0, rect.width(), rect.height()/3.0), mBrush); - } - // draw line vertically centered: - if (mLineStyle != lsNone) - { - applyDefaultAntialiasingHint(painter); - painter->setPen(mPen); - painter->drawLine(QLineF(rect.left(), rect.top()+rect.height()/2.0, rect.right()+5, rect.top()+rect.height()/2.0)); // +5 on x2 else last segment is missing from dashed/dotted pens - } - // draw scatter symbol: - if (mScatterStyle != QCP::ssNone) - { - if (mScatterStyle == QCP::ssPixmap && (mScatterPixmap.size().width() > rect.width() || mScatterPixmap.size().height() > rect.height())) - { - // handle pixmap scatters that are larger than legend icon rect separately. - // We resize them and draw them manually, instead of calling drawScatter: - QSize newSize = mScatterPixmap.size(); - newSize.scale(rect.size(), Qt::KeepAspectRatio); - QRect targetRect; - targetRect.setSize(newSize); - targetRect.moveCenter(rect.center()); - bool smoothBackup = painter->testRenderHint(QPainter::SmoothPixmapTransform); - painter->setRenderHint(QPainter::SmoothPixmapTransform, true); - painter->drawPixmap(targetRect, mScatterPixmap); - painter->setRenderHint(QPainter::SmoothPixmapTransform, smoothBackup); - } else - { - applyScattersAntialiasingHint(painter); - painter->setPen(mPen); - painter->drawScatter(QRectF(rect).center().x(), QRectF(rect).center().y(), mScatterSize, mScatterStyle); - } - } -} - -/*! - \internal - This function branches out to the line style specific "get(...)PlotData" functions, according to the - line style of the graph. - \param lineData will be filled with raw points that will be drawn with the according draw functions, e.g. \ref drawLinePlot and \ref drawImpulsePlot. - These aren't necessarily the original data points, since for step plots for example, additional points are needed for drawing lines that make up steps. - If the line style of the graph is \ref lsNone, the \a lineData vector will be left untouched. - \param pointData will be filled with the original data points so \ref drawScatterPlot can draw the scatter symbols accordingly. If no scatters need to be - drawn, i.e. scatter style is \ref QCP::ssNone, pass 0 as \a pointData, and this step will be skipped. - - \see getScatterPlotData, getLinePlotData, getStepLeftPlotData, getStepRightPlotData, getStepCenterPlotData, getImpulsePlotData -*/ -void QCPGraph::getPlotData(QVector *lineData, QVector *pointData) const -{ - switch(mLineStyle) - { - case lsNone: getScatterPlotData(pointData); break; - case lsLine: getLinePlotData(lineData, pointData); break; - case lsStepLeft: getStepLeftPlotData(lineData, pointData); break; - case lsStepRight: getStepRightPlotData(lineData, pointData); break; - case lsStepCenter: getStepCenterPlotData(lineData, pointData); break; - case lsImpulse: getImpulsePlotData(lineData, pointData); break; - } -} - -/*! - \internal - If line style is \ref lsNone and scatter style is not \ref QCP::ssNone, this function serves at providing the - visible data points in \a pointData, so the \ref drawScatterPlot function can draw the scatter points - accordingly. - - If line style is not \ref lsNone, this function is not called and the data for the scatter points - are (if needed) calculated inside the corresponding other "get(...)PlotData" functions. - \see drawScatterPlot -*/ -void QCPGraph::getScatterPlotData(QVector *pointData) const -{ - if (!pointData) return; - - // get visible data range: - QCPDataMap::const_iterator lower, upper; - int dataCount; - getVisibleDataBounds(lower, upper, dataCount); - // prepare vectors: - if (pointData) - pointData->resize(dataCount); - - // position data points: - QCPDataMap::const_iterator it = lower; - QCPDataMap::const_iterator upperEnd = upper+1; - int i = 0; - if (mKeyAxis->orientation() == Qt::Vertical) - { - while (it != upperEnd) - { - (*pointData)[i] = it.value(); - ++i; - ++it; - } - } else // key axis is horizontal - { - while (it != upperEnd) - { - (*pointData)[i] = it.value(); - ++i; - ++it; - } - } -} - -/*! - \internal - Places the raw data points needed for a normal linearly connected plot in \a lineData. - - As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) - points that are visible, for drawing scatter points, if necessary. If drawing scatter points is - disabled (i.e. scatter style \ref QCP::ssNone), pass 0 as \a pointData, and the function will skip - filling the vector. - \see drawLinePlot -*/ -void QCPGraph::getLinePlotData(QVector *lineData, QVector *pointData) const -{ - // get visible data range: - QCPDataMap::const_iterator lower, upper; - int dataCount; - getVisibleDataBounds(lower, upper, dataCount); - // prepare vectors: - if (lineData) - { - // added 2 to reserve memory for lower/upper fill base points that might be needed for fill - lineData->reserve(dataCount+2); - lineData->resize(dataCount); - } - if (pointData) - pointData->resize(dataCount); - - // position data points: - QCPDataMap::const_iterator it = lower; - QCPDataMap::const_iterator upperEnd = upper+1; - int i = 0; - if (mKeyAxis->orientation() == Qt::Vertical) - { - while (it != upperEnd) - { - if (pointData) - (*pointData)[i] = it.value(); - (*lineData)[i].setX(mValueAxis->coordToPixel(it.value().value)); - (*lineData)[i].setY(mKeyAxis->coordToPixel(it.key())); - ++i; - ++it; - } - } else // key axis is horizontal - { - while (it != upperEnd) - { - if (pointData) - (*pointData)[i] = it.value(); - (*lineData)[i].setX(mKeyAxis->coordToPixel(it.key())); - (*lineData)[i].setY(mValueAxis->coordToPixel(it.value().value)); - ++i; - ++it; - } - } -} - -/*! - \internal - Places the raw data points needed for a step plot with left oriented steps in \a lineData. - - As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) - points that are visible, for drawing scatter points, if necessary. If drawing scatter points is - disabled (i.e. scatter style \ref QCP::ssNone), pass 0 as \a pointData, and the function will skip - filling the vector. - \see drawLinePlot -*/ -void QCPGraph::getStepLeftPlotData(QVector *lineData, QVector *pointData) const -{ - // get visible data range: - QCPDataMap::const_iterator lower, upper; - int dataCount; - getVisibleDataBounds(lower, upper, dataCount); - // prepare vectors: - if (lineData) - { - // added 2 to reserve memory for lower/upper fill base points that might be needed for fill - // multiplied by 2 because step plot needs two polyline points per one actual data point - lineData->reserve(dataCount*2+2); - lineData->resize(dataCount*2); - } - if (pointData) - pointData->resize(dataCount); - - // position data points: - QCPDataMap::const_iterator it = lower; - QCPDataMap::const_iterator upperEnd = upper+1; - int i = 0; - int ipoint = 0; - if (mKeyAxis->orientation() == Qt::Vertical) - { - double lastValue = mValueAxis->coordToPixel(it.value().value); - double key; - while (it != upperEnd) - { - if (pointData) - { - (*pointData)[ipoint] = it.value(); - ++ipoint; - } - key = mKeyAxis->coordToPixel(it.key()); - (*lineData)[i].setX(lastValue); - (*lineData)[i].setY(key); - ++i; - lastValue = mValueAxis->coordToPixel(it.value().value); - (*lineData)[i].setX(lastValue); - (*lineData)[i].setY(key); - ++i; - ++it; - } - } else // key axis is horizontal - { - double lastValue = mValueAxis->coordToPixel(it.value().value); - double key; - while (it != upperEnd) - { - if (pointData) - { - (*pointData)[ipoint] = it.value(); - ++ipoint; - } - key = mKeyAxis->coordToPixel(it.key()); - (*lineData)[i].setX(key); - (*lineData)[i].setY(lastValue); - ++i; - lastValue = mValueAxis->coordToPixel(it.value().value); - (*lineData)[i].setX(key); - (*lineData)[i].setY(lastValue); - ++i; - ++it; - } - } -} - -/*! - \internal - Places the raw data points needed for a step plot with right oriented steps in \a lineData. - - As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) - points that are visible, for drawing scatter points, if necessary. If drawing scatter points is - disabled (i.e. scatter style \ref QCP::ssNone), pass 0 as \a pointData, and the function will skip - filling the vector. - \see drawLinePlot -*/ -void QCPGraph::getStepRightPlotData(QVector *lineData, QVector *pointData) const -{ - // get visible data range: - QCPDataMap::const_iterator lower, upper; - int dataCount; - getVisibleDataBounds(lower, upper, dataCount); - // prepare vectors: - if (lineData) - { - // added 2 to reserve memory for lower/upper fill base points that might be needed for fill - // multiplied by 2 because step plot needs two polyline points per one actual data point - lineData->reserve(dataCount*2+2); - lineData->resize(dataCount*2); - } - if (pointData) - pointData->resize(dataCount); - - // position points: - QCPDataMap::const_iterator it = lower; - QCPDataMap::const_iterator upperEnd = upper+1; - int i = 0; - int ipoint = 0; - if (mKeyAxis->orientation() == Qt::Vertical) - { - double lastKey = mKeyAxis->coordToPixel(it.key()); - double value; - while (it != upperEnd) - { - if (pointData) - { - (*pointData)[ipoint] = it.value(); - ++ipoint; - } - value = mValueAxis->coordToPixel(it.value().value); - (*lineData)[i].setX(value); - (*lineData)[i].setY(lastKey); - ++i; - lastKey = mKeyAxis->coordToPixel(it.key()); - (*lineData)[i].setX(value); - (*lineData)[i].setY(lastKey); - ++i; - ++it; - } - } else // key axis is horizontal - { - double lastKey = mKeyAxis->coordToPixel(it.key()); - double value; - while (it != upperEnd) - { - if (pointData) - { - (*pointData)[ipoint] = it.value(); - ++ipoint; - } - value = mValueAxis->coordToPixel(it.value().value); - (*lineData)[i].setX(lastKey); - (*lineData)[i].setY(value); - ++i; - lastKey = mKeyAxis->coordToPixel(it.key()); - (*lineData)[i].setX(lastKey); - (*lineData)[i].setY(value); - ++i; - ++it; - } - } -} - -/*! - \internal - Places the raw data points needed for a step plot with centered steps in \a lineData. - - As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) - points that are visible, for drawing scatter points, if necessary. If drawing scatter points is - disabled (i.e. scatter style \ref QCP::ssNone), pass 0 as \a pointData, and the function will skip - filling the vector. - \see drawLinePlot -*/ -void QCPGraph::getStepCenterPlotData(QVector *lineData, QVector *pointData) const -{ - // get visible data range: - QCPDataMap::const_iterator lower, upper; - int dataCount; - getVisibleDataBounds(lower, upper, dataCount); - // prepare vectors: - if (lineData) - { - // added 2 to reserve memory for lower/upper fill base points that might be needed for base fill - // multiplied by 2 because step plot needs two polyline points per one actual data point - lineData->reserve(dataCount*2+2); - lineData->resize(dataCount*2); - } - if (pointData) - pointData->resize(dataCount); - - // position points: - QCPDataMap::const_iterator it = lower; - QCPDataMap::const_iterator upperEnd = upper+1; - int i = 0; - int ipoint = 0; - if (mKeyAxis->orientation() == Qt::Vertical) - { - double lastKey = mKeyAxis->coordToPixel(it.key()); - double lastValue = mValueAxis->coordToPixel(it.value().value); - double key; - if (pointData) - { - (*pointData)[ipoint] = it.value(); - ++ipoint; - } - (*lineData)[i].setX(lastValue); - (*lineData)[i].setY(lastKey); - ++it; - ++i; - while (it != upperEnd) - { - if (pointData) - { - (*pointData)[ipoint] = it.value(); - ++ipoint; - } - key = (mKeyAxis->coordToPixel(it.key())-lastKey)*0.5 + lastKey; - (*lineData)[i].setX(lastValue); - (*lineData)[i].setY(key); - ++i; - lastValue = mValueAxis->coordToPixel(it.value().value); - lastKey = mKeyAxis->coordToPixel(it.key()); - (*lineData)[i].setX(lastValue); - (*lineData)[i].setY(key); - ++it; - ++i; - } - (*lineData)[i].setX(lastValue); - (*lineData)[i].setY(lastKey); - } else // key axis is horizontal - { - double lastKey = mKeyAxis->coordToPixel(it.key()); - double lastValue = mValueAxis->coordToPixel(it.value().value); - double key; - if (pointData) - { - (*pointData)[ipoint] = it.value(); - ++ipoint; - } - (*lineData)[i].setX(lastKey); - (*lineData)[i].setY(lastValue); - ++it; - ++i; - while (it != upperEnd) - { - if (pointData) - { - (*pointData)[ipoint] = it.value(); - ++ipoint; - } - key = (mKeyAxis->coordToPixel(it.key())-lastKey)*0.5 + lastKey; - (*lineData)[i].setX(key); - (*lineData)[i].setY(lastValue); - ++i; - lastValue = mValueAxis->coordToPixel(it.value().value); - lastKey = mKeyAxis->coordToPixel(it.key()); - (*lineData)[i].setX(key); - (*lineData)[i].setY(lastValue); - ++it; - ++i; - } - (*lineData)[i].setX(lastKey); - (*lineData)[i].setY(lastValue); - } -} - -/*! - \internal - Places the raw data points needed for an impulse plot in \a lineData. - - As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) - points that are visible, for drawing scatter points, if necessary. If drawing scatter points is - disabled (i.e. scatter style \ref QCP::ssNone), pass 0 as \a pointData, and the function will skip - filling the vector. - \see drawImpulsePlot -*/ -void QCPGraph::getImpulsePlotData(QVector *lineData, QVector *pointData) const -{ - // get visible data range: - QCPDataMap::const_iterator lower, upper; - int dataCount; - getVisibleDataBounds(lower, upper, dataCount); - // prepare vectors: - if (lineData) - { - // no need to reserve 2 extra points, because there is no fill for impulse plot - lineData->resize(dataCount*2); - } - if (pointData) - pointData->resize(dataCount); - - // position data points: - QCPDataMap::const_iterator it = lower; - QCPDataMap::const_iterator upperEnd = upper+1; - int i = 0; - int ipoint = 0; - if (mKeyAxis->orientation() == Qt::Vertical) - { - double zeroPointX = mValueAxis->coordToPixel(0); - double key; - while (it != upperEnd) - { - if (pointData) - { - (*pointData)[ipoint] = it.value(); - ++ipoint; - } - key = mKeyAxis->coordToPixel(it.key()); - (*lineData)[i].setX(zeroPointX); - (*lineData)[i].setY(key); - ++i; - (*lineData)[i].setX(mValueAxis->coordToPixel(it.value().value)); - (*lineData)[i].setY(key); - ++i; - ++it; - } - } else // key axis is horizontal - { - double zeroPointY = mValueAxis->coordToPixel(0); - double key; - while (it != upperEnd) - { - if (pointData) - { - (*pointData)[ipoint] = it.value(); - ++ipoint; - } - key = mKeyAxis->coordToPixel(it.key()); - (*lineData)[i].setX(key); - (*lineData)[i].setY(zeroPointY); - ++i; - (*lineData)[i].setX(key); - (*lineData)[i].setY(mValueAxis->coordToPixel(it.value().value)); - ++i; - ++it; - } - } -} - -/*! - \internal - Draws the fill of the graph with the specified brush. If the fill is a normal "base" fill, i.e. - under the graph toward the zero-value-line, only the \a lineData is required (and two extra points - at the zero-value-line, which are added by \ref addFillBasePoints and removed by \ref removeFillBasePoints - after the fill drawing is done). - - If the fill is a channel fill between this graph and another graph (mChannelFillGraph), the more complex - polygon is calculated with the \ref getChannelFillPolygon function. - \see drawLinePlot -*/ -void QCPGraph::drawFill(QCPPainter *painter, QVector *lineData) const -{ - if (mLineStyle == lsImpulse) return; // fill doesn't make sense for impulse plot - if (mainBrush().style() == Qt::NoBrush || mainBrush().color().alpha() == 0) return; - - applyFillAntialiasingHint(painter); - if (!mChannelFillGraph) - { - // draw base fill under graph, fill goes all the way to the zero-value-line: - addFillBasePoints(lineData); - painter->setPen(Qt::NoPen); - painter->setBrush(mainBrush()); - painter->drawPolygon(QPolygonF(*lineData)); - removeFillBasePoints(lineData); - } else - { - // draw channel fill between this graph and mChannelFillGraph: - painter->setPen(Qt::NoPen); - painter->setBrush(mainBrush()); - painter->drawPolygon(getChannelFillPolygon(lineData)); - } -} - -/*! \internal - - Draws scatter symbols at every data point passed in \a pointData. scatter symbols are independent of - the line style and are always drawn if scatter style is not \ref QCP::ssNone. Hence, the \a pointData vector - is outputted by all "get(...)PlotData" functions, together with the (line style dependent) line data. - \see drawLinePlot, drawImpulsePlot -*/ -void QCPGraph::drawScatterPlot(QCPPainter *painter, QVector *pointData) const -{ - // draw error bars: - if (mErrorType != etNone) - { - applyErrorBarsAntialiasingHint(painter); - painter->setPen(mErrorPen); - if (mKeyAxis->orientation() == Qt::Vertical) - { - for (int i=0; isize(); ++i) - drawError(painter, mValueAxis->coordToPixel(pointData->at(i).value), mKeyAxis->coordToPixel(pointData->at(i).key), pointData->at(i)); - } else - { - for (int i=0; isize(); ++i) - drawError(painter, mKeyAxis->coordToPixel(pointData->at(i).key), mValueAxis->coordToPixel(pointData->at(i).value), pointData->at(i)); - } - } - - // draw scatter point symbols: - applyScattersAntialiasingHint(painter); - painter->setPen(mainPen()); - painter->setBrush(mainBrush()); - painter->setScatterPixmap(mScatterPixmap); - if (mKeyAxis->orientation() == Qt::Vertical) - { - for (int i=0; isize(); ++i) - painter->drawScatter(mValueAxis->coordToPixel(pointData->at(i).value), mKeyAxis->coordToPixel(pointData->at(i).key), mScatterSize, mScatterStyle); - } else - { - for (int i=0; isize(); ++i) - painter->drawScatter(mKeyAxis->coordToPixel(pointData->at(i).key), mValueAxis->coordToPixel(pointData->at(i).value), mScatterSize, mScatterStyle); - } -} - -/*! - \internal - Draws line graphs from the provided data. It connects all points in \a lineData, which - was created by one of the "get(...)PlotData" functions for line styles that require simple line - connections between the point vector they create. These are for example \ref getLinePlotData, \ref - getStepLeftPlotData, \ref getStepRightPlotData and \ref getStepCenterPlotData. - \see drawScatterPlot, drawImpulsePlot -*/ -void QCPGraph::drawLinePlot(QCPPainter *painter, QVector *lineData) const -{ - // draw line of graph: - if (mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0) - { - applyDefaultAntialiasingHint(painter); - painter->setPen(mainPen()); - painter->setBrush(Qt::NoBrush); - - /* Draws polyline in batches, currently not used: - int p = 0; - while (p < lineData->size()) - { - int batch = qMin(25, lineData->size()-p); - if (p != 0) - { - ++batch; - --p; // to draw the connection lines between two batches - } - painter->drawPolyline(lineData->constData()+p, batch); - p += batch; - } - */ - - // if drawing solid line and not in PDF, use much faster line drawing instead of polyline: - if (mParentPlot->plottingHints().testFlag(QCP::phFastPolylines) && - painter->pen().style() == Qt::SolidLine && - !painter->pdfExportMode()) - { - for (int i=1; isize(); ++i) - painter->drawLine(lineData->at(i-1), lineData->at(i)); - } else - { - painter->drawPolyline(QPolygonF(*lineData)); - } - } -} - -/*! - \internal - Draws impulses graphs from the provided data, i.e. it connects all line pairs in \a lineData, which was - created by \ref getImpulsePlotData. - \see drawScatterPlot, drawLinePlot -*/ -void QCPGraph::drawImpulsePlot(QCPPainter *painter, QVector *lineData) const -{ - // draw impulses: - if (mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0) - { - applyDefaultAntialiasingHint(painter); - QPen pen = mainPen(); - pen.setCapStyle(Qt::FlatCap); // so impulse line doesn't reach beyond zero-line - painter->setPen(pen); - painter->setBrush(Qt::NoBrush); - painter->drawLines(*lineData); - } -} - -/*! - \internal - called by the scatter drawing function (\ref drawScatterPlot) to draw the error bars on one data - point. \a x and \a y pixel positions of the data point are passed since they are already known in - pixel coordinates in the drawing function, so we save some extra coordToPixel transforms here. \a - data is therefore only used for the errors, not key and value. -*/ -void QCPGraph::drawError(QCPPainter *painter, double x, double y, const QCPData &data) const -{ - double a, b; // positions of error bar bounds in pixels - double barWidthHalf = mErrorBarSize*0.5; - double skipSymbolMargin = mScatterSize*1.25; // pixels left blank per side, when mErrorBarSkipSymbol is true - - if (mKeyAxis->orientation() == Qt::Vertical) - { - // draw key error vertically and value error horizontally - if (mErrorType == etKey || mErrorType == etBoth) - { - a = mKeyAxis->coordToPixel(data.key-data.keyErrorMinus); - b = mKeyAxis->coordToPixel(data.key+data.keyErrorPlus); - if (mKeyAxis->rangeReversed()) - qSwap(a,b); - // draw spine: - if (mErrorBarSkipSymbol) - { - if (a-y > skipSymbolMargin) // don't draw spine if error is so small it's within skipSymbolmargin - painter->drawLine(QLineF(x, a, x, y+skipSymbolMargin)); - if (y-b > skipSymbolMargin) - painter->drawLine(QLineF(x, y-skipSymbolMargin, x, b)); - } else - painter->drawLine(QLineF(x, a, x, b)); - // draw handles: - painter->drawLine(QLineF(x-barWidthHalf, a, x+barWidthHalf, a)); - painter->drawLine(QLineF(x-barWidthHalf, b, x+barWidthHalf, b)); - } - if (mErrorType == etValue || mErrorType == etBoth) - { - a = mValueAxis->coordToPixel(data.value-data.valueErrorMinus); - b = mValueAxis->coordToPixel(data.value+data.valueErrorPlus); - if (mValueAxis->rangeReversed()) - qSwap(a,b); - // draw spine: - if (mErrorBarSkipSymbol) - { - if (x-a > skipSymbolMargin) // don't draw spine if error is so small it's within skipSymbolmargin - painter->drawLine(QLineF(a, y, x-skipSymbolMargin, y)); - if (b-x > skipSymbolMargin) - painter->drawLine(QLineF(x+skipSymbolMargin, y, b, y)); - } else - painter->drawLine(QLineF(a, y, b, y)); - // draw handles: - painter->drawLine(QLineF(a, y-barWidthHalf, a, y+barWidthHalf)); - painter->drawLine(QLineF(b, y-barWidthHalf, b, y+barWidthHalf)); - } - } else // mKeyAxis->orientation() is Qt::Horizontal - { - // draw value error vertically and key error horizontally - if (mErrorType == etKey || mErrorType == etBoth) - { - a = mKeyAxis->coordToPixel(data.key-data.keyErrorMinus); - b = mKeyAxis->coordToPixel(data.key+data.keyErrorPlus); - if (mKeyAxis->rangeReversed()) - qSwap(a,b); - // draw spine: - if (mErrorBarSkipSymbol) - { - if (x-a > skipSymbolMargin) // don't draw spine if error is so small it's within skipSymbolmargin - painter->drawLine(QLineF(a, y, x-skipSymbolMargin, y)); - if (b-x > skipSymbolMargin) - painter->drawLine(QLineF(x+skipSymbolMargin, y, b, y)); - } else - painter->drawLine(QLineF(a, y, b, y)); - // draw handles: - painter->drawLine(QLineF(a, y-barWidthHalf, a, y+barWidthHalf)); - painter->drawLine(QLineF(b, y-barWidthHalf, b, y+barWidthHalf)); - } - if (mErrorType == etValue || mErrorType == etBoth) - { - a = mValueAxis->coordToPixel(data.value-data.valueErrorMinus); - b = mValueAxis->coordToPixel(data.value+data.valueErrorPlus); - if (mValueAxis->rangeReversed()) - qSwap(a,b); - // draw spine: - if (mErrorBarSkipSymbol) - { - if (a-y > skipSymbolMargin) // don't draw spine if error is so small it's within skipSymbolmargin - painter->drawLine(QLineF(x, a, x, y+skipSymbolMargin)); - if (y-b > skipSymbolMargin) - painter->drawLine(QLineF(x, y-skipSymbolMargin, x, b)); - } else - painter->drawLine(QLineF(x, a, x, b)); - // draw handles: - painter->drawLine(QLineF(x-barWidthHalf, a, x+barWidthHalf, a)); - painter->drawLine(QLineF(x-barWidthHalf, b, x+barWidthHalf, b)); - } - } -} - -/*! - \internal - called by the specific plot data generating functions "get(...)PlotData" to determine - which data range is visible, so only that needs to be processed. - - \param[out] lower returns an iterator to the lowest data point that needs to be taken into account - when plotting. Note that in order to get a clean plot all the way to the edge of the axes, \a lower - may still be outside the visible range. - \param[out] upper returns an iterator to the highest data point. Same as before, \a upper may also - lie outside of the visible range. - \param[out] count number of data points that need plotting, i.e. points between \a lower and \a upper, - including them. This is useful for allocating the array of QPointFs in the specific drawing functions. -*/ -void QCPGraph::getVisibleDataBounds(QCPDataMap::const_iterator &lower, QCPDataMap::const_iterator &upper, int &count) const -{ - // get visible data range as QMap iterators - QCPDataMap::const_iterator lbound = mData->lowerBound(mKeyAxis->range().lower); - QCPDataMap::const_iterator ubound = mData->upperBound(mKeyAxis->range().upper)-1; - bool lowoutlier = lbound != mData->constBegin(); // indicates whether there exist points below axis range - bool highoutlier = ubound+1 != mData->constEnd(); // indicates whether there exist points above axis range - lower = (lowoutlier ? lbound-1 : lbound); // data pointrange that will be actually drawn - upper = (highoutlier ? ubound+1 : ubound); // data pointrange that will be actually drawn - - // count number of points in range lower to upper (including them), so we can allocate array for them in draw functions: - QCPDataMap::const_iterator it = lower; - count = 1; - while (it != upper) - { - ++it; - ++count; - } -} - -/*! - \internal - The line data vector generated by e.g. getLinePlotData contains only the line - that connects the data points. If the graph needs to be filled, two additional points - need to be added at the value-zero-line in the lower and upper key positions, the graph - reaches. This function calculates these points and adds them to the end of \a lineData. - Since the fill is typically drawn before the line stroke, these added points need to - be removed again after the fill is done, with the removeFillBasePoints function. - - The expanding of \a lineData by two points will not cause unnecessary memory reallocations, - because the data vector generation functions (getLinePlotData etc.) reserve two extra points - when they allocate memory for \a lineData. - \see removeFillBasePoints, lowerFillBasePoint, upperFillBasePoint -*/ -void QCPGraph::addFillBasePoints(QVector *lineData) const -{ - // append points that close the polygon fill at the key axis: - if (mKeyAxis->orientation() == Qt::Vertical) - { - *lineData << upperFillBasePoint(lineData->last().y()); - *lineData << lowerFillBasePoint(lineData->first().y()); - } else - { - *lineData << upperFillBasePoint(lineData->last().x()); - *lineData << lowerFillBasePoint(lineData->first().x()); - } -} - -/*! - \internal - removes the two points from \a lineData that were added by addFillBasePoints. - \see addFillBasePoints, lowerFillBasePoint, upperFillBasePoint -*/ -void QCPGraph::removeFillBasePoints(QVector *lineData) const -{ - lineData->remove(lineData->size()-2, 2); -} - -/*! - \internal - called by addFillBasePoints to conveniently assign the point which closes the fill - polygon on the lower side of the zero-value-line parallel to the key axis. - The logarithmic axis scale case is a bit special, since the zero-value-line in pixel coordinates - is in positive or negative infinity. So this case is handled separately by just closing the - fill polygon on the axis which lies in the direction towards the zero value. - - \param lowerKey pixel position of the lower key of the point. Depending on whether the key axis - is horizontal or vertical, \a lowerKey will end up as the x or y value of the returned point, - respectively. - \see upperFillBasePoint, addFillBasePoints -*/ -QPointF QCPGraph::lowerFillBasePoint(double lowerKey) const -{ - QPointF point; - if (mValueAxis->scaleType() == QCPAxis::stLinear) - { - if (mKeyAxis->axisType() == QCPAxis::atLeft) - { - point.setX(mValueAxis->coordToPixel(0)); - point.setY(lowerKey); - } else if (mKeyAxis->axisType() == QCPAxis::atRight) - { - point.setX(mValueAxis->coordToPixel(0)); - point.setY(lowerKey); - } else if (mKeyAxis->axisType() == QCPAxis::atTop) - { - point.setX(lowerKey); - point.setY(mValueAxis->coordToPixel(0)); - } else if (mKeyAxis->axisType() == QCPAxis::atBottom) - { - point.setX(lowerKey); - point.setY(mValueAxis->coordToPixel(0)); - } - } else // mValueAxis->mScaleType == QCPAxis::stLogarithmic - { - // In logarithmic scaling we can't just draw to value zero so we just fill all the way - // to the axis which is in the direction towards zero - if (mKeyAxis->orientation() == Qt::Vertical) - { - if ((mValueAxis->range().upper < 0 && !mValueAxis->rangeReversed()) || - (mValueAxis->range().upper > 0 && mValueAxis->rangeReversed())) // if range is negative, zero is on opposite side of key axis - point.setX(mKeyAxis->axisRect().right()); - else - point.setX(mKeyAxis->axisRect().left()); - point.setY(lowerKey); - } else if (mKeyAxis->axisType() == QCPAxis::atTop || mKeyAxis->axisType() == QCPAxis::atBottom) - { - point.setX(lowerKey); - if ((mValueAxis->range().upper < 0 && !mValueAxis->rangeReversed()) || - (mValueAxis->range().upper > 0 && mValueAxis->rangeReversed())) // if range is negative, zero is on opposite side of key axis - point.setY(mKeyAxis->axisRect().top()); - else - point.setY(mKeyAxis->axisRect().bottom()); - } - } - return point; -} - -/*! - \internal - called by addFillBasePoints to conveniently assign the point which closes the fill - polygon on the upper side of the zero-value-line parallel to the key axis. The logarithmic axis - scale case is a bit special, since the zero-value-line in pixel coordinates is in positive or - negative infinity. So this case is handled separately by just closing the fill polygon on the - axis which lies in the direction towards the zero value. - - \param upperKey pixel position of the upper key of the point. Depending on whether the key axis - is horizontal or vertical, \a upperKey will end up as the x or y value of the returned point, - respectively. - \see lowerFillBasePoint, addFillBasePoints -*/ -QPointF QCPGraph::upperFillBasePoint(double upperKey) const -{ - QPointF point; - if (mValueAxis->scaleType() == QCPAxis::stLinear) - { - if (mKeyAxis->axisType() == QCPAxis::atLeft) - { - point.setX(mValueAxis->coordToPixel(0)); - point.setY(upperKey); - } else if (mKeyAxis->axisType() == QCPAxis::atRight) - { - point.setX(mValueAxis->coordToPixel(0)); - point.setY(upperKey); - } else if (mKeyAxis->axisType() == QCPAxis::atTop) - { - point.setX(upperKey); - point.setY(mValueAxis->coordToPixel(0)); - } else if (mKeyAxis->axisType() == QCPAxis::atBottom) - { - point.setX(upperKey); - point.setY(mValueAxis->coordToPixel(0)); - } - } else // mValueAxis->mScaleType == QCPAxis::stLogarithmic - { - // In logarithmic scaling we can't just draw to value 0 so we just fill all the way - // to the axis which is in the direction towards 0 - if (mKeyAxis->orientation() == Qt::Vertical) - { - if ((mValueAxis->range().upper < 0 && !mValueAxis->rangeReversed()) || - (mValueAxis->range().upper > 0 && mValueAxis->rangeReversed())) // if range is negative, zero is on opposite side of key axis - point.setX(mKeyAxis->axisRect().right()); - else - point.setX(mKeyAxis->axisRect().left()); - point.setY(upperKey); - } else if (mKeyAxis->axisType() == QCPAxis::atTop || mKeyAxis->axisType() == QCPAxis::atBottom) - { - point.setX(upperKey); - if ((mValueAxis->range().upper < 0 && !mValueAxis->rangeReversed()) || - (mValueAxis->range().upper > 0 && mValueAxis->rangeReversed())) // if range is negative, zero is on opposite side of key axis - point.setY(mKeyAxis->axisRect().top()); - else - point.setY(mKeyAxis->axisRect().bottom()); - } - } - return point; -} - -/*! \internal - - Generates the polygon needed for drawing channel fills between this graph (data passed via \a - lineData) and the graph specified by mChannelFillGraph (data generated by calling its \ref - getPlotData function). May return an empty polygon if the key ranges have no overlap or fill - target graph and this graph don't have same orientation (i.e. both key axes horizontal or both - key axes vertical). For increased performance (due to implicit sharing), keep the returned QPolygonF - const. -*/ -const QPolygonF QCPGraph::getChannelFillPolygon(const QVector *lineData) const -{ - if (mChannelFillGraph->mKeyAxis->orientation() != mKeyAxis->orientation()) - return QPolygonF(); // don't have same axis orientation, can't fill that (Note: if keyAxis fits, valueAxis will fit too, because it's always orthogonal to keyAxis) - - if (lineData->isEmpty()) return QPolygonF(); - QVector otherData; - mChannelFillGraph->getPlotData(&otherData, 0); - if (otherData.isEmpty()) return QPolygonF(); - QVector thisData; - thisData.reserve(lineData->size()+otherData.size()); // because we will join both vectors at end of this function - for (int i=0; isize(); ++i) // don't use the vector<<(vector), it squeezes internally, which ruins the performance tuning with reserve() - thisData << lineData->at(i); - - // pointers to be able to swap them, depending which data range needs cropping: - QVector *staticData = &thisData; - QVector *croppedData = &otherData; - - // crop both vectors to ranges in which the keys overlap (which coord is key, depends on axisType): - if (mKeyAxis->orientation() == Qt::Horizontal) - { - // x is key - // if an axis range is reversed, the data point keys will be descending. Reverse them, since following algorithm assumes ascending keys: - if (staticData->first().x() > staticData->last().x()) - { - int size = staticData->size(); - for (int i=0; ifirst().x() > croppedData->last().x()) - { - int size = croppedData->size(); - for (int i=0; ifirst().x() < croppedData->first().x()) // other one must be cropped - qSwap(staticData, croppedData); - int lowBound = findIndexBelowX(croppedData, staticData->first().x()); - if (lowBound == -1) return QPolygonF(); // key ranges have no overlap - croppedData->remove(0, lowBound); - // set lowest point of cropped data to fit exactly key position of first static data - // point via linear interpolation: - if (croppedData->size() < 2) return QPolygonF(); // need at least two points for interpolation - double slope; - if (croppedData->at(1).x()-croppedData->at(0).x() != 0) - slope = (croppedData->at(1).y()-croppedData->at(0).y())/(croppedData->at(1).x()-croppedData->at(0).x()); - else - slope = 0; - (*croppedData)[0].setY(croppedData->at(0).y()+slope*(staticData->first().x()-croppedData->at(0).x())); - (*croppedData)[0].setX(staticData->first().x()); - - // crop upper bound: - if (staticData->last().x() > croppedData->last().x()) // other one must be cropped - qSwap(staticData, croppedData); - int highBound = findIndexAboveX(croppedData, staticData->last().x()); - if (highBound == -1) return QPolygonF(); // key ranges have no overlap - croppedData->remove(highBound+1, croppedData->size()-(highBound+1)); - // set highest point of cropped data to fit exactly key position of last static data - // point via linear interpolation: - if (croppedData->size() < 2) return QPolygonF(); // need at least two points for interpolation - int li = croppedData->size()-1; // last index - if (croppedData->at(li).x()-croppedData->at(li-1).x() != 0) - slope = (croppedData->at(li).y()-croppedData->at(li-1).y())/(croppedData->at(li).x()-croppedData->at(li-1).x()); - else - slope = 0; - (*croppedData)[li].setY(croppedData->at(li-1).y()+slope*(staticData->last().x()-croppedData->at(li-1).x())); - (*croppedData)[li].setX(staticData->last().x()); - } else // mKeyAxis->orientation() == Qt::Vertical - { - // y is key - // similar to "x is key" but switched x,y. Further, lower/upper meaning is inverted compared to x, - // because in pixel coordinates, y increases from top to bottom, not bottom to top like data coordinate. - // if an axis range is reversed, the data point keys will be descending. Reverse them, since following algorithm assumes ascending keys: - if (staticData->first().y() < staticData->last().y()) - { - int size = staticData->size(); - for (int i=0; ifirst().y() < croppedData->last().y()) - { - int size = croppedData->size(); - for (int i=0; ifirst().y() > croppedData->first().y()) // other one must be cropped - qSwap(staticData, croppedData); - int lowBound = findIndexAboveY(croppedData, staticData->first().y()); - if (lowBound == -1) return QPolygonF(); // key ranges have no overlap - croppedData->remove(0, lowBound); - // set lowest point of cropped data to fit exactly key position of first static data - // point via linear interpolation: - if (croppedData->size() < 2) return QPolygonF(); // need at least two points for interpolation - double slope; - if (croppedData->at(1).y()-croppedData->at(0).y() != 0) // avoid division by zero in step plots - slope = (croppedData->at(1).x()-croppedData->at(0).x())/(croppedData->at(1).y()-croppedData->at(0).y()); - else - slope = 0; - (*croppedData)[0].setX(croppedData->at(0).x()+slope*(staticData->first().y()-croppedData->at(0).y())); - (*croppedData)[0].setY(staticData->first().y()); - - // crop upper bound: - if (staticData->last().y() < croppedData->last().y()) // other one must be cropped - qSwap(staticData, croppedData); - int highBound = findIndexBelowY(croppedData, staticData->last().y()); - if (highBound == -1) return QPolygonF(); // key ranges have no overlap - croppedData->remove(highBound+1, croppedData->size()-(highBound+1)); - // set highest point of cropped data to fit exactly key position of last static data - // point via linear interpolation: - if (croppedData->size() < 2) return QPolygonF(); // need at least two points for interpolation - int li = croppedData->size()-1; // last index - if (croppedData->at(li).y()-croppedData->at(li-1).y() != 0) // avoid division by zero in step plots - slope = (croppedData->at(li).x()-croppedData->at(li-1).x())/(croppedData->at(li).y()-croppedData->at(li-1).y()); - else - slope = 0; - (*croppedData)[li].setX(croppedData->at(li-1).x()+slope*(staticData->last().y()-croppedData->at(li-1).y())); - (*croppedData)[li].setY(staticData->last().y()); - } - - // return joined: - for (int i=otherData.size()-1; i>=0; --i) // insert reversed, otherwise the polygon will be twisted - thisData << otherData.at(i); - return QPolygonF(thisData); -} - -/*! \internal - - Finds the smallest index of \a data, whose points x value is just above \a x. - Assumes x values in \a data points are ordered ascending, as is the case - when plotting with horizontal key axis. - Used to calculate the channel fill polygon, see \ref getChannelFillPolygon. -*/ -int QCPGraph::findIndexAboveX(const QVector *data, double x) const -{ - for (int i=data->size()-1; i>=0; --i) - { - if (data->at(i).x() < x) - { - if (isize()-1) - return i+1; - else - return data->size()-1; - } - } - return -1; -} - -/*! \internal - - Finds the greatest index of \a data, whose points x value is just below \a x. - Assumes x values in \a data points are ordered ascending, as is the case - when plotting with horizontal key axis. - Used to calculate the channel fill polygon, see \ref getChannelFillPolygon. -*/ -int QCPGraph::findIndexBelowX(const QVector *data, double x) const -{ - for (int i=0; isize(); ++i) - { - if (data->at(i).x() > x) - { - if (i>0) - return i-1; - else - return 0; - } - } - return -1; -} - -/*! \internal - - Finds the smallest index of \a data, whose points y value is just above \a y. - Assumes y values in \a data points are ordered descending, as is the case - when plotting with vertical key axis. - Used to calculate the channel fill polygon, see \ref getChannelFillPolygon. -*/ -int QCPGraph::findIndexAboveY(const QVector *data, double y) const -{ - for (int i=0; isize(); ++i) - { - if (data->at(i).y() < y) - { - if (i>0) - return i-1; - else - return 0; - } - } - return -1; -} - -/*! \internal - - Calculates the (minimum) distance (in pixels) the graph's representation has from the given \a - pixelPoint in pixels. This is used to determine whether the graph was clicked or not, e.g. in - \ref selectTest. -*/ -double QCPGraph::pointDistance(const QPointF &pixelPoint) const -{ - if (mData->isEmpty()) - { - qDebug() << Q_FUNC_INFO << "requested point distance on graph" << mName << "without data"; - return 500; - } - if (mData->size() == 1) - { - QPointF dataPoint = coordsToPixels(mData->constBegin().key(), mData->constBegin().value().value); - return QVector2D(dataPoint-pixelPoint).length(); - } - - if (mLineStyle == lsNone && mScatterStyle == QCP::ssNone) - return 500; - - // calculate minimum distances to graph representation: - if (mLineStyle == lsNone) - { - // no line displayed, only calculate distance to scatter points: - QVector *pointData = new QVector; - getScatterPlotData(pointData); - double minDistSqr = std::numeric_limits::max(); - QPointF ptA; - QPointF ptB = coordsToPixels(pointData->at(0).key, pointData->at(0).value); // getScatterPlotData returns in plot coordinates, so transform to pixels - for (int i=1; isize(); ++i) - { - ptA = ptB; - ptB = coordsToPixels(pointData->at(i).key, pointData->at(i).value); - double currentDistSqr = distSqrToLine(ptA, ptB, pixelPoint); - if (currentDistSqr < minDistSqr) - minDistSqr = currentDistSqr; - } - delete pointData; - return sqrt(minDistSqr); - } else - { - // line displayed calculate distance to line segments: - QVector *lineData = new QVector; - getPlotData(lineData, 0); // unlike with getScatterPlotData we get pixel coordinates here - double minDistSqr = std::numeric_limits::max(); - if (mLineStyle == lsImpulse) - { - // impulse plot differs from other line styles in that the lineData points are only pairwise connected: - for (int i=0; isize()-1; i+=2) // iterate pairs - { - double currentDistSqr = distSqrToLine(lineData->at(i), lineData->at(i+1), pixelPoint); - if (currentDistSqr < minDistSqr) - minDistSqr = currentDistSqr; - } - } else - { - // all other line plots (line and step) connect points directly: - for (int i=0; isize()-1; ++i) - { - double currentDistSqr = distSqrToLine(lineData->at(i), lineData->at(i+1), pixelPoint); - if (currentDistSqr < minDistSqr) - minDistSqr = currentDistSqr; - } - } - delete lineData; - return sqrt(minDistSqr); - } -} - -/*! \internal - - Finds the greatest index of \a data, whose points y value is just below \a y. - Assumes y values in \a data points are ordered descending, as is the case - when plotting with vertical key axis (since keys are ordered ascending). - Used to calculate the channel fill polygon, see \ref getChannelFillPolygon. -*/ -int QCPGraph::findIndexBelowY(const QVector *data, double y) const -{ - for (int i=data->size()-1; i>=0; --i) - { - if (data->at(i).y() > y) - { - if (isize()-1) - return i+1; - else - return data->size()-1; - } - } - return -1; -} - -/* inherits documentation from base class */ -QCPRange QCPGraph::getKeyRange(bool &validRange, SignDomain inSignDomain) const -{ - // just call the specialized version which takes an additional argument whether error bars - // should also be taken into consideration for range calculation. We set this to true here. - return getKeyRange(validRange, inSignDomain, true); -} - -/* inherits documentation from base class */ -QCPRange QCPGraph::getValueRange(bool &validRange, SignDomain inSignDomain) const -{ - // just call the specialized version which takes an additional argument whether error bars - // should also be taken into consideration for range calculation. We set this to true here. - return getValueRange(validRange, inSignDomain, true); -} - -/*! \overload - Allows to specify whether the error bars should be included in the range calculation. - - \see getKeyRange(bool &validRange, SignDomain inSignDomain) -*/ -QCPRange QCPGraph::getKeyRange(bool &validRange, SignDomain inSignDomain, bool includeErrors) const -{ - QCPRange range; - bool haveLower = false; - bool haveUpper = false; - - double current, currentErrorMinus, currentErrorPlus; - - if (inSignDomain == sdBoth) // range may be anywhere - { - QCPDataMap::const_iterator it = mData->constBegin(); - while (it != mData->constEnd()) - { - current = it.value().key; - currentErrorMinus = (includeErrors ? it.value().keyErrorMinus : 0); - currentErrorPlus = (includeErrors ? it.value().keyErrorPlus : 0); - if (current-currentErrorMinus < range.lower || !haveLower) - { - range.lower = current-currentErrorMinus; - haveLower = true; - } - if (current+currentErrorPlus > range.upper || !haveUpper) - { - range.upper = current+currentErrorPlus; - haveUpper = true; - } - ++it; - } - } else if (inSignDomain == sdNegative) // range may only be in the negative sign domain - { - QCPDataMap::const_iterator it = mData->constBegin(); - while (it != mData->constEnd()) - { - current = it.value().key; - currentErrorMinus = (includeErrors ? it.value().keyErrorMinus : 0); - currentErrorPlus = (includeErrors ? it.value().keyErrorPlus : 0); - if ((current-currentErrorMinus < range.lower || !haveLower) && current-currentErrorMinus < 0) - { - range.lower = current-currentErrorMinus; - haveLower = true; - } - if ((current+currentErrorPlus > range.upper || !haveUpper) && current+currentErrorPlus < 0) - { - range.upper = current+currentErrorPlus; - haveUpper = true; - } - if (includeErrors) // in case point is in valid sign domain but errobars stretch beyond it, we still want to geht that point. - { - if ((current < range.lower || !haveLower) && current < 0) - { - range.lower = current; - haveLower = true; - } - if ((current > range.upper || !haveUpper) && current < 0) - { - range.upper = current; - haveUpper = true; - } - } - ++it; - } - } else if (inSignDomain == sdPositive) // range may only be in the positive sign domain - { - QCPDataMap::const_iterator it = mData->constBegin(); - while (it != mData->constEnd()) - { - current = it.value().key; - currentErrorMinus = (includeErrors ? it.value().keyErrorMinus : 0); - currentErrorPlus = (includeErrors ? it.value().keyErrorPlus : 0); - if ((current-currentErrorMinus < range.lower || !haveLower) && current-currentErrorMinus > 0) - { - range.lower = current-currentErrorMinus; - haveLower = true; - } - if ((current+currentErrorPlus > range.upper || !haveUpper) && current+currentErrorPlus > 0) - { - range.upper = current+currentErrorPlus; - haveUpper = true; - } - if (includeErrors) // in case point is in valid sign domain but errobars stretch beyond it, we still want to get that point. - { - if ((current < range.lower || !haveLower) && current > 0) - { - range.lower = current; - haveLower = true; - } - if ((current > range.upper || !haveUpper) && current > 0) - { - range.upper = current; - haveUpper = true; - } - } - ++it; - } - } - - validRange = haveLower && haveUpper; - return range; -} - -/*! \overload - Allows to specify whether the error bars should be included in the range calculation. - - \see getValueRange(bool &validRange, SignDomain inSignDomain) -*/ -QCPRange QCPGraph::getValueRange(bool &validRange, SignDomain inSignDomain, bool includeErrors) const -{ - QCPRange range; - bool haveLower = false; - bool haveUpper = false; - - double current, currentErrorMinus, currentErrorPlus; - - if (inSignDomain == sdBoth) // range may be anywhere - { - QCPDataMap::const_iterator it = mData->constBegin(); - while (it != mData->constEnd()) - { - current = it.value().value; - currentErrorMinus = (includeErrors ? it.value().valueErrorMinus : 0); - currentErrorPlus = (includeErrors ? it.value().valueErrorPlus : 0); - if (current-currentErrorMinus < range.lower || !haveLower) - { - range.lower = current-currentErrorMinus; - haveLower = true; - } - if (current+currentErrorPlus > range.upper || !haveUpper) - { - range.upper = current+currentErrorPlus; - haveUpper = true; - } - ++it; - } - } else if (inSignDomain == sdNegative) // range may only be in the negative sign domain - { - QCPDataMap::const_iterator it = mData->constBegin(); - while (it != mData->constEnd()) - { - current = it.value().value; - currentErrorMinus = (includeErrors ? it.value().valueErrorMinus : 0); - currentErrorPlus = (includeErrors ? it.value().valueErrorPlus : 0); - if ((current-currentErrorMinus < range.lower || !haveLower) && current-currentErrorMinus < 0) - { - range.lower = current-currentErrorMinus; - haveLower = true; - } - if ((current+currentErrorPlus > range.upper || !haveUpper) && current+currentErrorPlus < 0) - { - range.upper = current+currentErrorPlus; - haveUpper = true; - } - if (includeErrors) // in case point is in valid sign domain but errobars stretch beyond it, we still want to get that point. - { - if ((current < range.lower || !haveLower) && current < 0) - { - range.lower = current; - haveLower = true; - } - if ((current > range.upper || !haveUpper) && current < 0) - { - range.upper = current; - haveUpper = true; - } - } - ++it; - } - } else if (inSignDomain == sdPositive) // range may only be in the positive sign domain - { - QCPDataMap::const_iterator it = mData->constBegin(); - while (it != mData->constEnd()) - { - current = it.value().value; - currentErrorMinus = (includeErrors ? it.value().valueErrorMinus : 0); - currentErrorPlus = (includeErrors ? it.value().valueErrorPlus : 0); - if ((current-currentErrorMinus < range.lower || !haveLower) && current-currentErrorMinus > 0) - { - range.lower = current-currentErrorMinus; - haveLower = true; - } - if ((current+currentErrorPlus > range.upper || !haveUpper) && current+currentErrorPlus > 0) - { - range.upper = current+currentErrorPlus; - haveUpper = true; - } - if (includeErrors) // in case point is in valid sign domain but errobars stretch beyond it, we still want to geht that point. - { - if ((current < range.lower || !haveLower) && current > 0) - { - range.lower = current; - haveLower = true; - } - if ((current > range.upper || !haveUpper) && current > 0) - { - range.upper = current; - haveUpper = true; - } - } - ++it; - } - } - - validRange = haveLower && haveUpper; - return range; -} - - -// ================================================================================ -// =================== QCPRange -// ================================================================================ -/*! \class QCPRange - \brief Represents the range an axis is encompassing. - - contains a \a lower and \a upper double value and provides convenience input, output and - modification functions. - - \see QCPAxis::setRange -*/ - -/*! - Minimum range size (\a upper - \a lower) the range changing functions will accept. Smaller - intervals would cause errors due to the 11-bit exponent of double precision numbers, - corresponding to a minimum magnitude of roughly 1e-308. - \see validRange, maxRange -*/ -const double QCPRange::minRange = 1e-280; - -/*! - Maximum values (negative and positive) the range will accept in range-changing functions. - Larger absolute values would cause errors due to the 11-bit exponent of double precision numbers, - corresponding to a maximum magnitude of roughly 1e308. - Since the number of planck-volumes in the entire visible universe is only ~1e183, this should - be enough. - \see validRange, minRange -*/ -const double QCPRange::maxRange = 1e250; - -/*! - Constructs a range with \a lower and \a upper set to zero. -*/ -QCPRange::QCPRange() : - lower(0), - upper(0) -{ -} - -/*! \overload - Constructs a range with the specified \a lower and \a upper values. -*/ -QCPRange::QCPRange(double lower, double upper) : - lower(lower), - upper(upper) -{ - normalize(); -} - -/*! - Returns the size of the range, i.e. \a upper-\a lower -*/ -double QCPRange::size() const -{ - return upper-lower; -} - -/*! - Returns the center of the range, i.e. (\a upper+\a lower)*0.5 -*/ -double QCPRange::center() const -{ - return (upper+lower)*0.5; -} - -/*! - Makes sure \a lower is numerically smaller than \a upper. If this is not the case, the values - are swapped. -*/ -void QCPRange::normalize() -{ - if (lower > upper) - qSwap(lower, upper); -} - -/*! - Returns a sanitized version of the range. Sanitized means for logarithmic scales, that - the range won't span the positive and negative sign domain, i.e. contain zero. Further - \a lower will always be numerically smaller (or equal) to \a upper. - - If the original range does span positive and negative sign domains or contains zero, - the returned range will try to approximate the original range as good as possible. - If the positive interval of the original range is wider than the negative interval, the - returned range will only contain the positive interval, with lower bound set to \a rangeFac or - \a rangeFac *\a upper, whichever is closer to zero. Same procedure is used if the negative interval - is wider than the positive interval, this time by changing the \a upper bound. -*/ -QCPRange QCPRange::sanitizedForLogScale() const -{ - double rangeFac = 1e-3; - QCPRange sanitizedRange(lower, upper); - sanitizedRange.normalize(); - // can't have range spanning negative and positive values in log plot, so change range to fix it - //if (qFuzzyCompare(sanitizedRange.lower+1, 1) && !qFuzzyCompare(sanitizedRange.upper+1, 1)) - if (sanitizedRange.lower == 0.0 && sanitizedRange.upper != 0.0) - { - // case lower is 0 - if (rangeFac < sanitizedRange.upper*rangeFac) - sanitizedRange.lower = rangeFac; - else - sanitizedRange.lower = sanitizedRange.upper*rangeFac; - } //else if (!qFuzzyCompare(lower+1, 1) && qFuzzyCompare(upper+1, 1)) - else if (sanitizedRange.lower != 0.0 && sanitizedRange.upper == 0.0) - { - // case upper is 0 - if (-rangeFac > sanitizedRange.lower*rangeFac) - sanitizedRange.upper = -rangeFac; - else - sanitizedRange.upper = sanitizedRange.lower*rangeFac; - } else if (sanitizedRange.lower < 0 && sanitizedRange.upper > 0) - { - // find out whether negative or positive interval is wider to decide which sign domain will be chosen - if (-sanitizedRange.lower > sanitizedRange.upper) - { - // negative is wider, do same as in case upper is 0 - if (-rangeFac > sanitizedRange.lower*rangeFac) - sanitizedRange.upper = -rangeFac; - else - sanitizedRange.upper = sanitizedRange.lower*rangeFac; - } else - { - // positive is wider, do same as in case lower is 0 - if (rangeFac < sanitizedRange.upper*rangeFac) - sanitizedRange.lower = rangeFac; - else - sanitizedRange.lower = sanitizedRange.upper*rangeFac; - } - } - // due to normalization, case lower>0 && upper<0 should never occur, because that implies upper= lower && value <= upper; -} - -/*! - Checks, whether the specified range is within valid bounds, which are defined - as QCPRange::maxRange and QCPRange::minRange. - A valid range means: - \li range bounds within -maxRange and maxRange - \li range size above minRange - \li range size below maxRange -*/ -bool QCPRange::validRange(double lower, double upper) -{ - /* - return (lower > -maxRange && - upper < maxRange && - qAbs(lower-upper) > minRange && - (lower < -minRange || lower > minRange) && - (upper < -minRange || upper > minRange)); - */ - return (lower > -maxRange && - upper < maxRange && - qAbs(lower-upper) > minRange && - qAbs(lower-upper) < maxRange); -} - -/*! - \overload - Checks, whether the specified range is within valid bounds, which are defined - as QCPRange::maxRange and QCPRange::minRange. - A valid range means: - \li range bounds within -maxRange and maxRange - \li range size above minRange - \li range size below maxRange -*/ -bool QCPRange::validRange(const QCPRange &range) -{ - /* - return (range.lower > -maxRange && - range.upper < maxRange && - qAbs(range.lower-range.upper) > minRange && - qAbs(range.lower-range.upper) < maxRange && - (range.lower < -minRange || range.lower > minRange) && - (range.upper < -minRange || range.upper > minRange)); - */ - return (range.lower > -maxRange && - range.upper < maxRange && - qAbs(range.lower-range.upper) > minRange && - qAbs(range.lower-range.upper) < maxRange); -} - - -// ================================================================================ -// =================== QCPLegend -// ================================================================================ - -/*! \class QCPLegend - \brief Manages a legend inside a QCustomPlot. - - Doesn't need to be instantiated externally, rather access QCustomPlot::legend -*/ - -/* start of documentation of signals */ - -/*! \fn void QCPLegend::selectionChanged(QCPLegend::SelectableParts selection); - - This signal is emitted when the selection state of this legend has changed. - - \see setSelected, setSelectable -*/ - -/* end of documentation of signals */ - -/*! - Constructs a new QCPLegend instance with \a parentPlot as the containing plot and default - values. Under normal usage, QCPLegend needn't be instantiated outside of QCustomPlot. - Access QCustomPlot::legend to modify the legend (set to invisible by default, see \ref - setVisible). -*/ -QCPLegend::QCPLegend(QCustomPlot *parentPlot) : - QCPLayerable(parentPlot) -{ - setAntialiased(false); - setPositionStyle(psTopRight); - setSize(100, 28); - setMinimumSize(100, 0); - setIconSize(32, 18); - setAutoSize(true); - - setMargin(12, 12, 12, 12); - setPadding(8, 8, 3, 3); - setItemSpacing(3); - setIconTextPadding(7); - - setSelectable(spLegendBox | spItems); - setSelected(spNone); - - setBorderPen(QPen(Qt::black)); - setSelectedBorderPen(QPen(Qt::blue, 2)); - setIconBorderPen(Qt::NoPen); - setSelectedIconBorderPen(QPen(Qt::blue, 2)); - setBrush(Qt::white); - setSelectedBrush(Qt::white); - setFont(parentPlot->font()); - setSelectedFont(parentPlot->font()); - setTextColor(Qt::black); - setSelectedTextColor(Qt::blue); -} - -QCPLegend::~QCPLegend() -{ - clearItems(); -} - -/*! - Sets the pen, the border of the entire legend is drawn with. -*/ -void QCPLegend::setBorderPen(const QPen &pen) -{ - mBorderPen = pen; -} - -/*! - Sets the brush of the legend background. -*/ -void QCPLegend::setBrush(const QBrush &brush) -{ - mBrush = brush; -} - -/*! - Sets the default font of legend text. Legend items that draw text (e.g. the name of a graph) will - use this font by default. However, a different font can be specified on a per-item-basis by - accessing the specific legend item. - - This function will also set \a font on all already existing legend items. - - \see QCPAbstractLegendItem::setFont -*/ -void QCPLegend::setFont(const QFont &font) -{ - mFont = font; - for (int i=0; isetFont(mFont); -} - -/*! - Sets the default color of legend text. Legend items that draw text (e.g. the name of a graph) - will use this color by default. However, a different colors can be specified on a per-item-basis - by accessing the specific legend item. - - This function will also set \a color on all already existing legend items. - - \see QCPAbstractLegendItem::setTextColor -*/ -void QCPLegend::setTextColor(const QColor &color) -{ - mTextColor = color; - for (int i=0; isetTextColor(color); -} - -/*! - Sets the position style of the legend. If the \a legendPositionStyle is not \ref psManual, the - position is found automatically depending on the specific \a legendPositionStyle and the - legend margins. If \a legendPositionStyle is \ref psManual, the exact pixel position of the - legend must be specified via \ref setPosition. Margins have no effect in that case. - \see setMargin -*/ -void QCPLegend::setPositionStyle(PositionStyle legendPositionStyle) -{ - mPositionStyle = legendPositionStyle; -} - -/*! - Sets the exact pixel Position of the legend inside the QCustomPlot widget, if \ref - setPositionStyle is set to \ref psManual. Margins have no effect in that case. -*/ -void QCPLegend::setPosition(const QPoint &pixelPosition) -{ - mPosition = pixelPosition; -} - -/*! - Sets whether the size of the legend should be calculated automatically to fit all the content - (plus padding), or whether the size must be specified manually with \ref setSize. - - If the autoSize mechanism is enabled, the legend will have the smallest possible size to still - display all its content. For items with text wrapping (QCPPlottableLegendItem::setTextWrap) this - means, they would become very compressed, i.e. wrapped at every word. To prevent this, set a - reasonable \ref setMinimumSize width. -*/ -void QCPLegend::setAutoSize(bool on) -{ - mAutoSize = on; -} - -/*! - Sets the size of the legend. Setting the size manually with this function only has an effect, if - \ref setAutoSize is set to false. - - If you want to control the minimum size (or the text-wrapping width) while still leaving the - autoSize mechanism enabled, consider using \ref setMinimumSize. - - \see setAutoSize, setMinimumSize -*/ -void QCPLegend::setSize(const QSize &size) -{ - mSize = size; -} - -/*! \overload -*/ -void QCPLegend::setSize(int width, int height) -{ - mSize = QSize(width, height); -} - -/*! - Sets the minimum size of the legend when \ref setAutoSize is enabled. - - If text wrapping is enabled in the legend items (e.g. \ref QCPPlottableLegendItem::setTextWrap), this minimum \a size defines the width - at which the wrapping will occur. Note that the wrapping will happen only at word boundaries, so the actual size might - still be bigger than the \a size given here, but not smaller. - - If \ref setAutoSize is not enabled, the minimum \a size is ignored. Setting a smaller legend size with \ref setSize manually, is not prevented. - - \see setAutoSize, setSize, QCPPlottableLegendItem::setTextWrap -*/ -void QCPLegend::setMinimumSize(const QSize &size) -{ - mMinimumSize = size; -} - -/*! \overload -*/ -void QCPLegend::setMinimumSize(int width, int height) -{ - mMinimumSize = QSize(width, height); -} - -/*! - Sets the left padding of the legend. Padding is the space by what the legend box is made larger - than minimally needed for the content to fit. I.e. it's the space left blank on each side inside - the legend. -*/ -void QCPLegend::setPaddingLeft(int padding) -{ - mPaddingLeft = padding; -} - -/*! - Sets the right padding of the legend. Padding is the space by what the legend box is made larger - than minimally needed for the content to fit. I.e. it's the space left blank on each side inside - the legend. -*/ -void QCPLegend::setPaddingRight(int padding) -{ - mPaddingRight = padding; -} - -/*! - Sets the top padding of the legend. Padding is the space by what the legend box is made larger - than minimally needed for the content to fit. I.e. it's the space left blank on each side inside - the legend. -*/ -void QCPLegend::setPaddingTop(int padding) -{ - mPaddingTop = padding; -} - -/*! - Sets the bottom padding of the legend. Padding is the space by what the legend box is made larger - than minimally needed for the content to fit. I.e. it's the space left blank on each side inside - the legend. -*/ -void QCPLegend::setPaddingBottom(int padding) -{ - mPaddingBottom = padding; -} - -/*! - Sets the padding of the legend. Padding is the space by what the legend box is made larger than - minimally needed for the content to fit. I.e. it's the space left blank on each side inside the - legend. -*/ -void QCPLegend::setPadding(int left, int right, int top, int bottom) -{ - mPaddingLeft = left; - mPaddingRight = right; - mPaddingTop = top; - mPaddingBottom = bottom; -} - -/*! - Sets the left margin of the legend. Margins are the distances the legend will keep to the axis - rect, when \ref setPositionStyle is not \ref psManual. -*/ -void QCPLegend::setMarginLeft(int margin) -{ - mMarginLeft = margin; -} - -/*! - Sets the right margin of the legend. Margins are the distances the legend will keep to the axis - rect, when \ref setPositionStyle is not \ref psManual. -*/ -void QCPLegend::setMarginRight(int margin) -{ - mMarginRight = margin; -} - -/*! - Sets the top margin of the legend. Margins are the distances the legend will keep to the axis - rect, when \ref setPositionStyle is not \ref psManual. -*/ -void QCPLegend::setMarginTop(int margin) -{ - mMarginTop = margin; -} - -/*! - Sets the bottom margin of the legend. Margins are the distances the legend will keep to the axis - rect, when \ref setPositionStyle is not \ref psManual. -*/ -void QCPLegend::setMarginBottom(int margin) -{ - mMarginBottom = margin; -} - -/*! - Sets the margin of the legend. Margins are the distances the legend will keep to the axis rect, - when \ref setPositionStyle is not \ref psManual. -*/ -void QCPLegend::setMargin(int left, int right, int top, int bottom) -{ - mMarginLeft = left; - mMarginRight = right; - mMarginTop = top; - mMarginBottom = bottom; -} - -/*! - Sets the vertical space between two legend items in the legend. - - \see setIconTextPadding, setPadding -*/ -void QCPLegend::setItemSpacing(int spacing) -{ - mItemSpacing = spacing; -} - -/*! - Sets the size of legend icons. Legend items that draw an icon (e.g. a visual - representation of the graph) will use this size by default. -*/ -void QCPLegend::setIconSize(const QSize &size) -{ - mIconSize = size; -} - -/*! \overload -*/ -void QCPLegend::setIconSize(int width, int height) -{ - mIconSize.setWidth(width); - mIconSize.setHeight(height); -} - -/*! - Sets the horizontal space in pixels between the legend icon and the text next to it. - Legend items that draw an icon (e.g. a visual representation of the graph) and text (e.g. the - name of the graph) will use this space by default. - - \see setItemSpacing -*/ -void QCPLegend::setIconTextPadding(int padding) -{ - mIconTextPadding = padding; -} - -/*! - Sets the pen used to draw a border around each legend icon. Legend items that draw an - icon (e.g. a visual representation of the graph) will use this pen by default. - - If no border is wanted, set this to \a Qt::NoPen. -*/ -void QCPLegend::setIconBorderPen(const QPen &pen) -{ - mIconBorderPen = pen; -} - -/*! - Sets whether the user can (de-)select the parts in \a selectable by clicking on the QCustomPlot surface. - (When \ref QCustomPlot::setInteractions contains iSelectLegend.) - - However, even when \a selectable is set to a value not allowing the selection of a specific part, - it is still possible to set the selection of this part manually, by calling \ref setSelected - directly. - - \see SelectablePart, setSelected -*/ -void QCPLegend::setSelectable(const SelectableParts &selectable) -{ - mSelectable = selectable; -} - -/*! - Sets the selected state of the respective legend parts described by \ref SelectablePart. When a part - is selected, it uses a different pen/font and brush. If some legend items are selected and \a selected - doesn't contain \ref spItems, those items become deselected. - - The entire selection mechanism is handled automatically when \ref QCustomPlot::setInteractions - contains iSelectLegend. You only need to call this function when you wish to change the selection - state manually. - - This function can change the selection state of a part even when \ref setSelectable was set to a - value that actually excludes the part. - - emits the \ref selectionChanged signal when \a selected is different from the previous selection state. - - Note that it doesn't make sense to set the selected state \ref spItems here when it wasn't set - before, because there's no way to specify which exact items to newly select. Do this by calling - \ref QCPAbstractLegendItem::setSelected directly on the legend item you wish to select. - - \see SelectablePart, setSelectable, selectTest, setSelectedBorderPen, setSelectedIconBorderPen, setSelectedBrush, - setSelectedFont -*/ -void QCPLegend::setSelected(const SelectableParts &selected) -{ - if (mSelected != selected) - { - if (!selected.testFlag(spItems) && mSelected.testFlag(spItems)) // some items are selected, but new selection state doesn't contain spItems, so deselect them - { - for (int i=0; isetSelected(false); - mSelected = selected; - // not necessary to emit selectionChanged here because this will have happened for the last setSelected(false) on mItems already, via updateSelectionState() - } else - { - mSelected = selected; - emit selectionChanged(mSelected); - } - } -} - -/*! - When the legend box is selected, this pen is used to draw the border instead of the normal pen - set via \ref setBorderPen. - - \see setSelected, setSelectable, setSelectedBrush -*/ -void QCPLegend::setSelectedBorderPen(const QPen &pen) -{ - mSelectedBorderPen = pen; -} - -/*! - Sets the pen legend items will use to draw their icon borders, when they are selected. - - \see setSelected, setSelectable, setSelectedFont -*/ -void QCPLegend::setSelectedIconBorderPen(const QPen &pen) -{ - mSelectedIconBorderPen = pen; -} - -/*! - When the legend box is selected, this brush is used to draw the legend background instead of the normal brush - set via \ref setBrush. - - \see setSelected, setSelectable, setSelectedBorderPen -*/ -void QCPLegend::setSelectedBrush(const QBrush &brush) -{ - mSelectedBrush = brush; -} - -/*! - Sets the default font that is used by legend items when they are selected. - - This function will also set \a font on all already existing legend items. - - \see setFont, QCPAbstractLegendItem::setSelectedFont -*/ -void QCPLegend::setSelectedFont(const QFont &font) -{ - mSelectedFont = font; - for (int i=0; isetSelectedFont(font); -} - -/*! - Sets the default text color that is used by legend items when they are selected. - - This function will also set \a color on all already existing legend items. - - \see setTextColor, QCPAbstractLegendItem::setSelectedTextColor -*/ -void QCPLegend::setSelectedTextColor(const QColor &color) -{ - mSelectedTextColor = color; - for (int i=0; isetSelectedTextColor(color); -} - -/*! - Returns the item with index \a i. - - \see itemCount -*/ -QCPAbstractLegendItem *QCPLegend::item(int index) const -{ - if (index >= 0 && index < mItems.size()) - return mItems[index]; - else - return 0; -} - -/*! - Returns the QCPPlottableLegendItem which is associated with \a plottable (e.g. a \ref QCPGraph*). - If such an item isn't in the legend, returns 0. - - \see hasItemWithPlottable -*/ -QCPPlottableLegendItem *QCPLegend::itemWithPlottable(const QCPAbstractPlottable *plottable) const -{ - for (int i=0; i(mItems.at(i))) - { - if (pli->plottable() == plottable) - return pli; - } - } - return 0; -} - -/*! - Returns the number of items currently in the legend. - \see item -*/ -int QCPLegend::itemCount() const -{ - return mItems.size(); -} - -/*! - Returns whether the legend contains \a item. -*/ -bool QCPLegend::hasItem(QCPAbstractLegendItem *item) const -{ - return mItems.contains(item); -} - -/*! - Returns whether the legend contains a QCPPlottableLegendItem which is associated with \a plottable (e.g. a \ref QCPGraph*). - If such an item isn't in the legend, returns false. - - \see itemWithPlottable -*/ -bool QCPLegend::hasItemWithPlottable(const QCPAbstractPlottable *plottable) const -{ - return itemWithPlottable(plottable); -} - -/*! - Adds \a item to the legend, if it's not present already. - - Returns true on sucess, i.e. if the item wasn't in the list already and has been successfuly added. - - The legend takes ownership of the item. -*/ -bool QCPLegend::addItem(QCPAbstractLegendItem *item) -{ - if (!mItems.contains(item)) - { - mItems.append(item); - return true; - } else - return false; -} - -/*! - Removes the item with index \a index from the legend. - - Returns true, if successful. - - \see itemCount, clearItems -*/ -bool QCPLegend::removeItem(int index) -{ - if (index >= 0 && index < mItems.size()) - { - mItemBoundingBoxes.remove(mItems.at(index)); - delete mItems.at(index); - mItems.removeAt(index); - return true; - } else - return false; -} - -/*! \overload - - Removes \a item from the legend. - - Returns true, if successful. - - \see clearItems -*/ -bool QCPLegend::removeItem(QCPAbstractLegendItem *item) -{ - return removeItem(mItems.indexOf(item)); -} - -/*! - Removes all items from the legend. -*/ -void QCPLegend::clearItems() -{ - qDeleteAll(mItems); - mItems.clear(); - mItemBoundingBoxes.clear(); -} - - -/*! - Returns the legend items that are currently selected. If no items are selected, - the list is empty. - - \see QCPAbstractLegendItem::setSelected, setSelectable -*/ -QList QCPLegend::selectedItems() const -{ - QList result; - for (int i=0; iselected()) - result.append(mItems.at(i)); - } - return result; -} - -/*! - If \ref setAutoSize is true, the size needed to fit all legend contents is calculated and applied. - Finally, the automatic positioning of the legend is performed, depending on the \ref - setPositionStyle setting. -*/ -void QCPLegend::reArrange() -{ - if (mAutoSize) - { - calculateAutoSize(); - } - calculateAutoPosition(); -} - -/*! - Returns whether the point \a pos in pixels hits the legend rect. - - \see selectTestItem -*/ -bool QCPLegend::selectTestLegend(const QPointF &pos) const -{ - return QRect(mPosition, mSize).contains(pos.toPoint()); -} - -/*! - When the point \a pos in pixels hits a legend item, the item is returned. If no item is hit, 0 is - returned. - - \see selectTestLegend -*/ -QCPAbstractLegendItem *QCPLegend::selectTestItem(const QPoint pos) const -{ - QMap::const_iterator it; - for (it = mItemBoundingBoxes.constBegin(); it != mItemBoundingBoxes.constEnd(); ++it) - { - if (it.value().contains(pos) && mItems.contains(it.key())) - return it.key(); - } - return 0; -} - -/*! \internal - - Updates the spItems part of the selection state of this legend by going through all child items - and checking their selected state. - - If no items are selected and the current selected state contains spItems, it is removed and the - \ref selectionChanged signal is emitted. If at least one item is selected and the current selection - state does not contain spItems, it is added and the signal is emitted, too. - - This function is called in the QCPAbstractLegendItem::setSelected functions to propagate their - change to the parent legend. -*/ -void QCPLegend::updateSelectionState() -{ - bool hasSelections = false; - for (int i=0; iselected()) - { - hasSelections = true; - break; - } - } - - // in the following we don't use setSelected because it would cause unnecessary - // logic looping through items if spItems isn't set in the new state. (look at setSelected and you'll understand) - if (hasSelections && !mSelected.testFlag(spItems)) - { - mSelected |= spItems; - emit selectionChanged(mSelected); - } else if (!hasSelections && mSelected.testFlag(spItems)) - { - mSelected &= ~spItems; - emit selectionChanged(mSelected); - } -} - -/*! \internal - - Handles the selection \a event and returns true when the selection event hit any parts of the - legend. If the selection state of any parts of the legend was changed, the output parameter \a - modified is set to true. - - When \a additiveSelecton is true, any new selections become selected in addition to the recent - selections. The recent selections are not cleared. Further, clicking on one object multiple times - in additive selection mode, toggles the selection of that object on and off. - - To indicate that an event deselects the legend (i.e. the parts that are deselectable by the user, - see \ref setSelectable), pass 0 as \a event. -*/ -bool QCPLegend::handleLegendSelection(QMouseEvent *event, bool additiveSelection, bool &modified) -{ - modified = false; - bool selectionFound = false; - - if (event && selectTestLegend(event->pos())) // clicked inside legend somewhere - { - QCPAbstractLegendItem *ali = selectTestItem(event->pos()); - if (selectable().testFlag(QCPLegend::spItems) && ali && ali->selectable()) // items shall be selectable and item ali was clicked - { - selectionFound = true; - // deselect legend box: - if (!additiveSelection && selected().testFlag(QCPLegend::spLegendBox) && selectable().testFlag(QCPLegend::spLegendBox)) - setSelected(selected() & ~QCPLegend::spLegendBox); - // first select clicked item: - if (!ali->selected() || additiveSelection) // if additive selection, we toggle selection on and off per click - { - modified = true; - ali->setSelected(!ali->selected()); - } - // finally, deselect all other items (if we had deselected all first, the selectionChanged signal of QCPLegend might have been emitted twice): - if (!additiveSelection) - { - for (int i=0; iselected() && item(i)->selectable()) - { - modified = true; - item(i)->setSelected(false); - } - } - } - } else // no specific item clicked or items not selectable - { - // if items actually were selectable, this means none were clicked, deselect them: - if (selectable().testFlag(QCPLegend::spItems) && selected().testFlag(QCPLegend::spItems) && !additiveSelection) - { - for (int i=0; iselectable()) - item(i)->setSelected(false); - } - modified = true; - } - // if legend box is selectable, select it: - if (selectable().testFlag(QCPLegend::spLegendBox)) - { - if (!selected().testFlag(QCPLegend::spLegendBox) || additiveSelection) - { - selectionFound = true; - setSelected(selected() ^ QCPLegend::spLegendBox); // xor because we always toggle - modified = true; - } - } - } - } else if (selected() != QCPLegend::spNone && selectable() != QCPLegend::spNone && !additiveSelection) // legend not clicked, deselect it if selectable allows that (and all child items) - { - // only deselect parts that are allowed to be changed by user according to selectable() - // deselect child items (and automatically removes spItems from selected state of legend, if last item gets deselected): - if (selectable().testFlag(spItems)) - { - for (int i=0; iselected() && item(i)->selectable()) - { - item(i)->setSelected(false); - modified = true; - } - } - } - // only deselect parts that are allowed to be changed (are selectable). Don't forcibly remove - // spItems, because some selected items might not be selectable, i.e. allowed to be deselected - // by user interaction. If that's not the case, spItems will have been removed from selected() - // state in previous loop by individual setSelected(false) calls on the items anyway. - QCPLegend::SelectableParts newState = selected() & ~(selectable()&~spItems); - if (newState != selected()) - { - setSelected(newState); - modified = true; - } - } - - return selectionFound; -} - -/*! \internal - - A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter - before drawing main legend elements. - - This is the antialiasing state the painter passed to the \ref draw method is in by default. - - This function takes into account the local setting of the antialiasing flag as well as - the overrides set e.g. with \ref QCustomPlot::setNotAntialiasedElements. - - \see setAntialiased -*/ -void QCPLegend::applyDefaultAntialiasingHint(QCPPainter *painter) const -{ - applyAntialiasingHint(painter, mAntialiased, QCP::aeLegend); -} - -/*! \internal - - Returns the pen used to paint the border of the legend, taking into account the selection state - of the legend box. -*/ -QPen QCPLegend::getBorderPen() const -{ - return mSelected.testFlag(spLegendBox) ? mSelectedBorderPen : mBorderPen; -} - -/*! \internal - - Returns the brush used to paint the background of the legend, taking into account the selection - state of the legend box. -*/ -QBrush QCPLegend::getBrush() const -{ - return mSelected.testFlag(spLegendBox) ? mSelectedBrush : mBrush; -} - -/*! \internal - - Draws the legend with the provided \a painter. -*/ -void QCPLegend::draw(QCPPainter *painter) -{ - painter->setBrush(getBrush()); - painter->setPen(getBorderPen()); - // draw background rect: - painter->drawRect(QRect(mPosition, mSize)); - // draw legend items: - painter->setClipRect(QRect(mPosition, mSize).adjusted(1, 1, 0, 0)); - painter->setPen(QPen()); - painter->setBrush(Qt::NoBrush); - int currentTop = mPosition.y()+mPaddingTop; - for (int i=0; isize(QSize(mSize.width(), 0)); - QRect itemRect = QRect(QPoint(mPosition.x()+mPaddingLeft, currentTop), itemSize); - mItemBoundingBoxes.insert(mItems.at(i), itemRect); - painter->save(); - mItems.at(i)->applyAntialiasingHint(painter); - mItems.at(i)->draw(painter, itemRect); - painter->restore(); - currentTop += itemSize.height()+mItemSpacing; - } -} - -/*! \internal - - Goes through similar steps as \ref draw and calculates the width and height needed to - fit all items and padding in the legend. The new calculated size is then applied to the mSize of - this legend. -*/ -void QCPLegend::calculateAutoSize() -{ - int width = mMinimumSize.width()-mPaddingLeft-mPaddingRight; // start with minimum width and only expand from there - int currentTop; - bool repeat = true; - int repeatCount = 0; - while (repeat && repeatCount < 3) // repeat until we find self-consistent width (usually 2 runs) - { - repeat = false; - currentTop = mPaddingTop; - for (int i=0; isize(QSize(width, 0)); - currentTop += s.height(); - if (i < mItems.size()-1) // vertical spacer for all but last item - currentTop += mItemSpacing; - if (width < s.width()) - { - width = s.width(); - repeat = true; // changed width, so need a new run with new width to let other items adapt their height to that new width - } - } - repeatCount++; - } - if (repeat) - qDebug() << Q_FUNC_INFO << "hit repeat limit for iterative width calculation"; - currentTop += mPaddingBottom; - width += mPaddingLeft+mPaddingRight; - - mSize.setWidth(width); - if (currentTop > mMinimumSize.height()) - mSize.setHeight(currentTop); - else - mSize.setHeight(mMinimumSize.height()); -} - -/*! \internal - - Sets the position dependant on the \ref setPositionStyle setting and the margins. -*/ -void QCPLegend::calculateAutoPosition() -{ - switch (mPositionStyle) - { - case psTopLeft: - mPosition = mParentPlot->mAxisRect.topLeft() + QPoint(mMarginLeft, mMarginTop); break; - case psTop: - mPosition = mParentPlot->mAxisRect.topLeft() + QPoint(mParentPlot->mAxisRect.width()/2.0-mSize.width()/2.0, mMarginTop); break; - case psTopRight: - mPosition = mParentPlot->mAxisRect.topRight() + QPoint(-mMarginRight-mSize.width(), mMarginTop); break; - case psRight: - mPosition = mParentPlot->mAxisRect.topRight() + QPoint(-mMarginRight-mSize.width(), mParentPlot->mAxisRect.height()/2.0-mSize.height()/2.0); break; - case psBottomRight: - mPosition = mParentPlot->mAxisRect.bottomRight() + QPoint(-mMarginRight-mSize.width(), -mMarginBottom-mSize.height()); break; - case psBottom: - mPosition = mParentPlot->mAxisRect.bottomLeft() + QPoint(mParentPlot->mAxisRect.width()/2.0-mSize.width()/2.0, -mMarginBottom-mSize.height()); break; - case psBottomLeft: - mPosition = mParentPlot->mAxisRect.bottomLeft() + QPoint(mMarginLeft, -mMarginBottom-mSize.height()); break; - case psLeft: - mPosition = mParentPlot->mAxisRect.topLeft() + QPoint(mMarginLeft, mParentPlot->mAxisRect.height()/2.0-mSize.height()/2.0); break; - case psManual: break; - } -} - - -// ================================================================================ -// =================== QCPAxis -// ================================================================================ - -/*! \class QCPAxis - \brief Manages a single axis inside a QCustomPlot. - - Usually doesn't need to be instantiated externally. Access %QCustomPlot's axes via - QCustomPlot::xAxis (bottom), QCustomPlot::yAxis (left), QCustomPlot::xAxis2 (top) and - QCustomPlot::yAxis2 (right). -*/ - -/* start of documentation of inline functions */ - -/*! \fn Qt::Orientation QCPAxis::orientation() const - - Returns the orientation of the axis. The axis orientation (horizontal or vertical) is deduced - from the axis type (left, top, right or bottom). -*/ - -/* end of documentation of inline functions */ -/* start of documentation of signals */ - -/*! \fn void QCPAxis::ticksRequest() - - This signal is emitted when \ref setAutoTicks is false and the axis is about to generate tick - labels and replot itself. - - Modifying the tick positions can be done with \ref setTickVector. If you also want to control the - tick labels, set \ref setAutoTickLabels to false and also provide the labels with \ref - setTickVectorLabels. - - If you only want static ticks you probably don't need this signal, since you can just set the - tick vector (and possibly tick label vector) once. However, if you want to provide ticks (and - maybe labels) dynamically, e.g. depending on the current axis range, connect a slot to this - signal and set the vector/vectors there. -*/ - -/*! \fn void QCPAxis::rangeChanged(const QCPRange &newRange) - - This signal is emitted when the range of this axis has changed. You can connect it to the \ref - setRange slot of another axis to communicate the new range to the other axis, in order for it to - be synchronized. -*/ - -/*! \fn void QCPAxis::selectionChanged(QCPAxis::SelectableParts selection) - - This signal is emitted when the selection state of this axis has changed, either by user interaction - or by a direct call to \ref setSelected. -*/ - -/* end of documentation of signals */ - -/*! - Constructs an Axis instance of Type \a type inside \a parentPlot. -*/ -QCPAxis::QCPAxis(QCustomPlot *parentPlot, AxisType type) : - QCPLayerable(parentPlot) -{ - mLowestVisibleTick = 0; - mHighestVisibleTick = -1; - mGrid = new QCPGrid(this); - setAxisType(type); - setAxisRect(parentPlot->axisRect()); - setScaleType(stLinear); - setScaleLogBase(10); - - setAntialiased(false); - setRange(0, 5); - setRangeReversed(false); - - setTicks(true); - setTickStep(1); - setAutoTickCount(6); - setAutoTicks(true); - setAutoTickLabels(true); - setAutoTickStep(true); - setTickLabelFont(parentPlot->font()); - setTickLabelColor(Qt::black); - setTickLength(5); - setTickPen(QPen(Qt::black, 0, Qt::SolidLine, Qt::SquareCap)); - setTickLabels(true); - setTickLabelType(ltNumber); - setTickLabelRotation(0); - setDateTimeFormat("hh:mm:ss\ndd.MM.yy"); - setNumberFormat("gbd"); - setNumberPrecision(6); - setLabel(""); - setLabelFont(parentPlot->font()); - setLabelColor(Qt::black); - - setAutoSubTicks(true); - setSubTickCount(4); - setSubTickLength(2); - setSubTickPen(QPen(Qt::black, 0, Qt::SolidLine, Qt::SquareCap)); - setBasePen(QPen(Qt::black, 0, Qt::SolidLine, Qt::SquareCap)); - - setSelected(spNone); - setSelectable(spAxis | spTickLabels | spAxisLabel); - QFont selTickLabelFont = tickLabelFont(); - selTickLabelFont.setBold(true); - setSelectedTickLabelFont(selTickLabelFont); - QFont selLabelFont = labelFont(); - selLabelFont.setBold(true); - setSelectedLabelFont(selLabelFont); - setSelectedTickLabelColor(Qt::blue); - setSelectedLabelColor(Qt::blue); - QPen blueThickPen(Qt::blue, 2); - setSelectedBasePen(blueThickPen); - setSelectedTickPen(blueThickPen); - setSelectedSubTickPen(blueThickPen); - - setPadding(0); - if (type == atTop) - { - setTickLabelPadding(3); - setLabelPadding(6); - } else if (type == atRight) - { - setTickLabelPadding(7); - setLabelPadding(12); - } else if (type == atBottom) - { - setTickLabelPadding(3); - setLabelPadding(3); - } else if (type == atLeft) - { - setTickLabelPadding(5); - setLabelPadding(10); - } -} - -QCPAxis::~QCPAxis() -{ - delete mGrid; -} - -/* No documentation as it is a property getter */ -QString QCPAxis::numberFormat() const -{ - QString result; - result.append(mNumberFormatChar); - if (mNumberBeautifulPowers) - { - result.append("b"); - if (mNumberMultiplyCross) - result.append("c"); - } - return result; -} - -/*! \internal - - Sets the axis type. This determines the \ref orientation and together with the current axis rect - (see \ref setAxisRect), the position of the axis. Depending on \a type, ticks, tick labels, and - label are drawn on corresponding sides of the axis base line. -*/ -void QCPAxis::setAxisType(AxisType type) -{ - mAxisType = type; - mOrientation = (type == atBottom || type == atTop) ? Qt::Horizontal : Qt::Vertical; -} - -/*! \internal - - Sets the axis rect. The axis uses this rect to position itself within the plot, - together with the information of its type (\ref setAxisType). Theoretically it's possible to give - a plot's axes different axis rects (e.g. for gaps between them), however, they are currently all - synchronized by the QCustomPlot::setAxisRect function. -*/ -void QCPAxis::setAxisRect(const QRect &rect) -{ - mAxisRect = rect; -} - -/*! - Sets whether the axis uses a linear scale or a logarithmic scale. If \a type is set to \ref - stLogarithmic, the logarithm base can be set with \ref setScaleLogBase. In logarithmic axis - scaling, major tick marks appear at all powers of the logarithm base. Properties like tick step - (\ref setTickStep) don't apply in logarithmic scaling. If you wish a decimal base but less major - ticks, consider choosing a logarithm base of 100, 1000 or even higher. - - If \a type is \ref stLogarithmic and the number format (\ref setNumberFormat) uses the 'b' option - (beautifully typeset decimal powers), the display usually is "1 [multiplication sign] 10 - [superscript] n", which looks unnatural for logarithmic scaling (the "1 [multiplication sign]" - part). To only display the decimal power, set the number precision to zero with - \ref setNumberPrecision. -*/ -void QCPAxis::setScaleType(ScaleType type) -{ - mScaleType = type; - if (mScaleType == stLogarithmic) - mRange = mRange.sanitizedForLogScale(); -} - -/*! - If \ref setScaleType is set to \ref stLogarithmic, \a base will be the logarithm base of the - scaling. In logarithmic axis scaling, major tick marks appear at all powers of \a base. - - Properties like tick step (\ref setTickStep) don't apply in logarithmic scaling. If you wish a decimal base but - less major ticks, consider choosing \a base 100, 1000 or even higher. -*/ -void QCPAxis::setScaleLogBase(double base) -{ - if (base > 1) - { - mScaleLogBase = base; - mScaleLogBaseLogInv = 1.0/qLn(mScaleLogBase); // buffer for faster baseLog() calculation - } else - qDebug() << Q_FUNC_INFO << "Invalid logarithmic scale base (must be greater 1):" << base; -} - -/*! - Sets the range of the axis. - - This slot may be connected with the \ref rangeChanged signal of another axis so this axis - is always synchronized with the other axis range, when it changes. - - To invert the direction of an axis range, use \ref setRangeReversed. -*/ -void QCPAxis::setRange(const QCPRange &range) -{ - if (range.lower == mRange.lower && range.upper == mRange.upper) - return; - - if (!QCPRange::validRange(range)) return; - if (mScaleType == stLogarithmic) - { - mRange = range.sanitizedForLogScale(); - } else - { - mRange = range.sanitizedForLinScale(); - } - emit rangeChanged(mRange); -} - -/*! - Sets whether the user can (de-)select the parts in \a selectable by clicking on the QCustomPlot surface. - (When \ref QCustomPlot::setInteractions contains iSelectAxes.) - - However, even when \a selectable is set to a value not allowing the selection of a specific part, - it is still possible to set the selection of this part manually, by calling \ref setSelected - directly. - - \see SelectablePart, setSelected -*/ -void QCPAxis::setSelectable(const SelectableParts &selectable) -{ - mSelectable = selectable; -} - -/*! - Sets the selected state of the respective axis parts described by \ref SelectablePart. When a part - is selected, it uses a different pen/font. - - The entire selection mechanism for axes is handled automatically when \ref - QCustomPlot::setInteractions contains iSelectAxes. You only need to call this function when you - wish to change the selection state manually. - - This function can change the selection state of a part even when \ref setSelectable was set to a - value that actually excludes the part. - - emits the \ref selectionChanged signal when \a selected is different from the previous selection state. - - \see SelectablePart, setSelectable, selectTest, setSelectedBasePen, setSelectedTickPen, setSelectedSubTickPen, - setSelectedTickLabelFont, setSelectedLabelFont, setSelectedTickLabelColor, setSelectedLabelColor -*/ -void QCPAxis::setSelected(const SelectableParts &selected) -{ - if (mSelected != selected) - { - mSelected = selected; - emit selectionChanged(mSelected); - } -} - -/*! - \overload - Sets the lower and upper bound of the axis range. - - To invert the direction of an axis range, use \ref setRangeReversed. - - There is also a slot to set a range, see \ref setRange(const QCPRange &range). -*/ -void QCPAxis::setRange(double lower, double upper) -{ - if (lower == mRange.lower && upper == mRange.upper) - return; - - if (!QCPRange::validRange(lower, upper)) return; - mRange.lower = lower; - mRange.upper = upper; - if (mScaleType == stLogarithmic) - { - mRange = mRange.sanitizedForLogScale(); - } else - { - mRange = mRange.sanitizedForLinScale(); - } - emit rangeChanged(mRange); -} - -/*! - \overload - Sets the range of the axis. - - \param position the \a position coordinate indicates together with the \a alignment parameter, where - the new range will be positioned. - \param size defines the size (upper-lower) of the new axis range. - \param alignment determines how \a position is to be interpreted.\n - If \a alignment is Qt::AlignLeft, \a position will be the lower bound of the range.\n - If \a alignment is Qt::AlignRight, \a position will be the upper bound of the range.\n - If \a alignment is Qt::AlignCenter, the new range will be centered around \a position.\n - Any other values for \a alignment will default to Qt::AlignCenter. -*/ -void QCPAxis::setRange(double position, double size, Qt::AlignmentFlag alignment) -{ - if (alignment == Qt::AlignLeft) - setRange(position, position+size); - else if (alignment == Qt::AlignRight) - setRange(position-size, position); - else // alignment == Qt::AlignCenter - setRange(position-size/2.0, position+size/2.0); -} - -/*! - Sets the lower bound of the axis range, independently of the upper bound. - \see setRange -*/ -void QCPAxis::setRangeLower(double lower) -{ - if (mRange.lower == lower) - return; - - mRange.lower = lower; - if (mScaleType == stLogarithmic) - { - mRange = mRange.sanitizedForLogScale(); - } else - { - mRange = mRange.sanitizedForLinScale(); - } - emit rangeChanged(mRange); -} - -/*! - Sets the upper bound of the axis range, independently of the lower bound. - \see setRange -*/ -void QCPAxis::setRangeUpper(double upper) -{ - if (mRange.upper == upper) - return; - - mRange.upper = upper; - if (mScaleType == stLogarithmic) - { - mRange = mRange.sanitizedForLogScale(); - } else - { - mRange = mRange.sanitizedForLinScale(); - } - emit rangeChanged(mRange); -} - -/*! - Sets whether the axis range (direction) is displayed reversed. Normally, the values on horizontal - axes increase left to right, on vertical axes bottom to top. When \a reversed is set to true, the - direction of increasing values is inverted. Note that the range and data interface stays the same - for reversed axes, e.g. the \a lower part of the \ref setRange interface will still reference the - mathematically smaller number than the \a upper part. -*/ -void QCPAxis::setRangeReversed(bool reversed) -{ - mRangeReversed = reversed; -} - -/*! - Sets whether the grid of this axis is drawn antialiased or not. - - Note that this setting may be overridden by \ref QCustomPlot::setAntialiasedElements and \ref - QCustomPlot::setNotAntialiasedElements. -*/ -void QCPAxis::setAntialiasedGrid(bool enabled) -{ - mGrid->setAntialiased(enabled); -} - -/*! - Sets whether the sub grid of this axis is drawn antialiased or not. - - Note that this setting may be overridden by \ref QCustomPlot::setAntialiasedElements and \ref - QCustomPlot::setNotAntialiasedElements. -*/ -void QCPAxis::setAntialiasedSubGrid(bool enabled) -{ - mGrid->setAntialiasedSubGrid(enabled); -} - -/*! - Sets whether the zero line of this axis is drawn antialiased or not. - - Note that this setting may be overridden by \ref QCustomPlot::setAntialiasedElements and \ref - QCustomPlot::setNotAntialiasedElements. -*/ -void QCPAxis::setAntialiasedZeroLine(bool enabled) -{ - mGrid->setAntialiasedZeroLine(enabled); -} - -/*! - Sets whether the grid lines are visible. - \see setSubGrid, setGridPen, setZeroLinePen -*/ -void QCPAxis::setGrid(bool show) -{ - mGrid->setVisible(show); -} - -/*! - Sets whether the sub grid lines are visible. - \see setGrid, setSubGridPen, setZeroLinePen -*/ -void QCPAxis::setSubGrid(bool show) -{ - mGrid->setSubGridVisible(show); -} - -/*! - Sets whether the tick positions should be calculated automatically (either from an automatically - generated tick step or a tick step provided manually via \ref setTickStep, see \ref setAutoTickStep). - - If \a on is set to false, you must provide the tick positions manually via \ref setTickVector. - For these manual ticks you may let QCPAxis generate the appropriate labels automatically - by setting/leaving \ref setAutoTickLabels true. If you also wish to control the displayed labels - manually, set \ref setAutoTickLabels to false and provide the label strings with \ref setTickVectorLabels. - - If you need dynamically calculated tick vectors (and possibly tick label vectors), set the - vectors in a slot connected to the \ref ticksRequest signal. -*/ -void QCPAxis::setAutoTicks(bool on) -{ - mAutoTicks = on; -} - -/*! - When \ref setAutoTickStep is true, \a approximateCount determines how many ticks should be generated - in the visible range approximately. -*/ -void QCPAxis::setAutoTickCount(int approximateCount) -{ - mAutoTickCount = approximateCount; -} - -/*! - Sets whether the tick labels are generated automatically depending on the tick label type - (\ref ltNumber or \ref ltDateTime). - - If \a on is set to false, you should provide the tick labels via \ref setTickVectorLabels. This - is usually used in a combination with \ref setAutoTicks set to false for complete control over - tick positions and labels, e.g. when the ticks should be at multiples of pi and show "2pi", "3pi" - etc. as tick labels. - - If you need dynamically calculated tick vectors (and possibly tick label vectors), set the - vectors in a slot connected to the \ref ticksRequest signal. -*/ -void QCPAxis::setAutoTickLabels(bool on) -{ - mAutoTickLabels = on; -} - -/*! - Sets whether the tick step, i.e. the interval between two (major) ticks, is calculated - automatically. If \a on is set to true, the axis finds a tick step that is reasonable for human - readable plots. This means the tick step mantissa is chosen such that it's either a multiple of - two or ends in 0.5. The number of ticks the algorithm aims for within the visible range can be - set with \ref setAutoTickCount. It's not guaranteed that this number of ticks is met exactly, but - approximately within a tolerance of two or three. - - If \a on is set to false, you may set the tick step manually with \ref setTickStep. -*/ -void QCPAxis::setAutoTickStep(bool on) -{ - mAutoTickStep = on; -} - -/*! - Sets whether the number of sub ticks in one tick interval is determined automatically. - This works, as long as the tick step mantissa is a multiple of 0.5 (which it is, when - \ref setAutoTickStep is enabled).\n - When \a on is set to false, you may set the sub tick count with \ref setSubTickCount manually. -*/ -void QCPAxis::setAutoSubTicks(bool on) -{ - mAutoSubTicks = on; -} - -/*! - Sets whether tick marks are displayed. Setting \a show to false does not imply, that tick labels - are invisible, too. To achieve that, see \ref setTickLabels. -*/ -void QCPAxis::setTicks(bool show) -{ - mTicks = show; -} - -/*! - Sets whether tick labels are displayed. -*/ -void QCPAxis::setTickLabels(bool show) -{ - mTickLabels = show; -} - -/*! - Sets the distance between the axis base line (or any tick marks pointing outward) and the tick labels. - \see setLabelPadding, setPadding -*/ -void QCPAxis::setTickLabelPadding(int padding) -{ - mTickLabelPadding = padding; -} - -/*! - Sets whether the tick labels display numbers or dates/times.\n - If \a type is set to \ref ltNumber, the format specifications of \ref setNumberFormat apply.\n - If \a type is set to \ref ltDateTime, the format specifications of \ref setDateTimeFormat apply.\n - In QCustomPlot, date/time coordinates are double numbers representing the seconds since 1970-01-01T00:00:00 UTC. - This format can be retrieved from QDateTime objects with the QDateTime::toTime_t() function. Since this - only gives a resolution of one second, there is also the QDateTime::toMSecsSinceEpoch() function which - returns the timespan described above in milliseconds. Divide its return value by 1000.0 to get a value with - the format needed for date/time plotting, this time with a resolution of one millisecond. -*/ -void QCPAxis::setTickLabelType(LabelType type) -{ - mTickLabelType = type; -} - -/*! - Sets the font of the tick labels, i.e. the numbers drawn next to tick marks. - - \see setTickLabelColor -*/ -void QCPAxis::setTickLabelFont(const QFont &font) -{ - mTickLabelFont = font; -} - -/*! - Sets the color of the tick labels, i.e. the numbers drawn next to tick marks. - - \see setTickLabelFont -*/ -void QCPAxis::setTickLabelColor(const QColor &color) -{ - mTickLabelColor = color; -} - -/*! - Sets the rotation of the tick labels, i.e. the numbers drawn next to tick marks. If \a degrees - is zero, the labels are drawn normally. Else, the tick labels are drawn rotated by \a degrees - clockwise. The specified angle is bound to values from -90 to 90 degrees. -*/ -void QCPAxis::setTickLabelRotation(double degrees) -{ - mTickLabelRotation = qBound(-90.0, degrees, 90.0); -} - -/*! - Sets the format in which dates and times are displayed as tick labels, if \ref setTickLabelType is \ref ltDateTime. - for details about the \a format string, see the documentation of QDateTime::toString(). - Newlines can be inserted with "\n". -*/ -void QCPAxis::setDateTimeFormat(const QString &format) -{ - mDateTimeFormat = format; -} - -/*! - Sets the number format for the numbers drawn as tick labels (if tick label type is \ref - ltNumber). This \a formatCode is an extended version of the format code used e.g. by - QString::number() and QLocale::toString(). For reference about that, see the "Argument Formats" - section in the detailed description of the QString class. \a formatCode is a string of one, two - or three characters. The first character is identical to the normal format code used by Qt. In - short, this means: 'e'/'E' scientific format, 'f' fixed format, 'g'/'G' scientific or fixed, - whichever is shorter. - - The second and third characters are optional and specific to QCustomPlot:\n - If the first char was 'e' or 'g', numbers are/might be displayed in the scientific format, e.g. - "5.5e9", which is ugly in a plot. So when the second char of \a formatCode is set to 'b' (for - "beautiful"), those exponential numbers are formatted in a more natural way, i.e. "5.5 - [multiplication sign] 10 [superscript] 9". By default, the multiplication sign is a centered dot. - If instead a cross should be shown (as is usual in the USA), the third char of \a formatCode can - be set to 'c'. The inserted multiplication signs are the UTF-8 characters 215 (0xD7) for the - cross and 183 (0xB7) for the dot. - - If the scale type (\ref setScaleType) is \ref stLogarithmic and the \a formatCode uses the 'b' - option (beautifully typeset decimal powers), the display usually is "1 [multiplication sign] 10 - [superscript] n", which looks unnatural for logarithmic scaling (the "1 [multiplication sign]" - part). To only display the decimal power, set the number precision to zero with \ref - setNumberPrecision. - - Examples for \a formatCode: - \li \c g normal format code behaviour. If number is small, fixed format is used, if number is large, - normal scientific format is used - \li \c gb If number is small, fixed format is used, if number is large, scientific format is used with - beautifully typeset decimal powers and a dot as multiplication sign - \li \c ebc All numbers are in scientific format with beautifully typeset decimal power and a cross as - multiplication sign - \li \c fb illegal format code, since fixed format doesn't support (or need) beautifully typeset decimal - powers. Format code will be reduced to 'f'. - \li \c hello illegal format code, since first char is not 'e', 'E', 'f', 'g' or 'G'. Current format - code will not be changed. -*/ -void QCPAxis::setNumberFormat(const QString &formatCode) -{ - if (formatCode.length() < 1) return; - - // interpret first char as number format char: - QString allowedFormatChars = "eEfgG"; - if (allowedFormatChars.contains(formatCode.at(0))) - { - mNumberFormatChar = formatCode.at(0).toAscii(); - } else - { - qDebug() << Q_FUNC_INFO << "Invalid number format code (first char not in 'eEfgG'):" << formatCode; - return; - } - if (formatCode.length() < 2) - { - mNumberBeautifulPowers = false; - mNumberMultiplyCross = false; - return; - } - - // interpret second char as indicator for beautiful decimal powers: - if (formatCode.at(1) == 'b' && (mNumberFormatChar == 'e' || mNumberFormatChar == 'g')) - { - mNumberBeautifulPowers = true; - } else - { - qDebug() << Q_FUNC_INFO << "Invalid number format code (second char not 'b' or first char neither 'e' nor 'g'):" << formatCode; - return; - } - if (formatCode.length() < 3) - { - mNumberMultiplyCross = false; - return; - } - - // interpret third char as indicator for dot or cross multiplication symbol: - if (formatCode.at(2) == 'c') - { - mNumberMultiplyCross = true; - } else if (formatCode.at(2) == 'd') - { - mNumberMultiplyCross = false; - } else - { - qDebug() << Q_FUNC_INFO << "Invalid number format code (third char neither 'c' nor 'd'):" << formatCode; - return; - } -} - -/*! - Sets the precision of the numbers drawn as tick labels. See QLocale::toString(double i, char f, - int prec) for details. The effect of precisions are most notably for number Formats starting with - 'e', see \ref setNumberFormat - - If the scale type (\ref setScaleType) is \ref stLogarithmic and the number format (\ref - setNumberFormat) uses the 'b' format code (beautifully typeset decimal powers), the display - usually is "1 [multiplication sign] 10 [superscript] n", which looks unnatural for logarithmic - scaling (the "1 [multiplication sign]" part). To only display the decimal power, set \a precision - to zero. -*/ -void QCPAxis::setNumberPrecision(int precision) -{ - mNumberPrecision = precision; -} - -/*! - If \ref setAutoTickStep is set to false, use this function to set the tick step manually. - The tick step is the interval between (major) ticks, in plot coordinates. - \see setSubTickCount -*/ -void QCPAxis::setTickStep(double step) -{ - mTickStep = step; -} - -/*! - If you want full control over what ticks (and possibly labels) the axes show, this function is - used to set the coordinates at which ticks will appear.\ref setAutoTicks must be disabled, else - the provided tick vector will be overwritten with automatically generated tick coordinates. The - labels of the ticks can either be generated automatically when \ref setAutoTickLabels is left - enabled, or be set manually with \ref setTickVectorLabels, when \ref setAutoTickLabels is - disabled. - - \a vec is a vector containing the positions of the ticks. - - \see setTickVectorLabels -*/ -void QCPAxis::setTickVector(const QVector &vec) -{ - mTickVector = vec; -} - -/*! - If you want full control over what ticks and labels the axes show, this function is used to set a - number of QStrings that will be displayed at the tick positions which you need to provide with - \ref setTickVector. These two vectors should have the same size. (Note that you need to disable - \ref setAutoTicks and \ref setAutoTickLabels first.) - - \a vec is a vector containing the labels of the ticks. - - \see setTickVector -*/ -void QCPAxis::setTickVectorLabels(const QVector &vec) -{ - mTickVectorLabels = vec; -} - -/*! - Sets the length of the ticks in pixels. \a inside is the length the ticks will reach inside the - plot and \a outside is the length they will reach outside the plot. If \a outside is greater than - zero, the tick labels will increase their distance to the axis accordingly, so they won't collide - with the ticks. - \see setSubTickLength -*/ -void QCPAxis::setTickLength(int inside, int outside) -{ - mTickLengthIn = inside; - mTickLengthOut = outside; -} - -/*! - Sets the number of sub ticks in one (major) tick step. A sub tick count of three for example, - divides the tick intervals in four sub intervals. - - By default, the number of sub ticks is chosen automatically in a reasonable manner as long as - the mantissa of the tick step is a multiple of 0.5 (which it is, when \ref setAutoTickStep is enabled). - If you want to disable automatic sub ticks and use this function to set the count manually, see - \ref setAutoSubTicks. -*/ -void QCPAxis::setSubTickCount(int count) -{ - mSubTickCount = count; -} - -/*! - Sets the length of the subticks in pixels. \a inside is the length the subticks will reach inside the - plot and \a outside is the length they will reach outside the plot. If \a outside is greater than - zero, the tick labels will increase their distance to the axis accordingly, so they won't collide - with the ticks. - \see setTickLength -*/ -void QCPAxis::setSubTickLength(int inside, int outside) -{ - mSubTickLengthIn = inside; - mSubTickLengthOut = outside; -} - -/*! - Sets the pen, the axis base line is drawn with. - - \see setTickPen, setSubTickPen -*/ -void QCPAxis::setBasePen(const QPen &pen) -{ - mBasePen = pen; -} - -/*! - Sets the pen, grid lines are drawn with. - \see setSubGridPen, setZeroLinePen -*/ -void QCPAxis::setGridPen(const QPen &pen) -{ - mGrid->setPen(pen); -} - -/*! - Sets the pen, the sub grid lines are drawn with. - (By default, subgrid drawing needs to be enabled first with \ref setSubGrid.) - \see setGridPen, setZeroLinePen -*/ -void QCPAxis::setSubGridPen(const QPen &pen) -{ - mGrid->setSubGridPen(pen); -} - -/*! - Sets the pen with which a single grid-like line will be drawn at value position zero. The line - will be drawn instead of a grid line at that position, and not on top. To disable the drawing of - a zero-line, set \a pen to Qt::NoPen. Then, if \ref setGrid is enabled, a grid line will be - drawn instead. - \see setGrid, setGridPen -*/ -void QCPAxis::setZeroLinePen(const QPen &pen) -{ - mGrid->setZeroLinePen(pen); -} - -/*! - Sets the pen, tick marks will be drawn with. - \see setTickLength, setBasePen -*/ -void QCPAxis::setTickPen(const QPen &pen) -{ - mTickPen = pen; -} - -/*! - Sets the pen, subtick marks will be drawn with. - \see setSubTickCount, setSubTickLength, setBasePen -*/ -void QCPAxis::setSubTickPen(const QPen &pen) -{ - mSubTickPen = pen; -} - -/*! - Sets the font of the axis label. - - \see setLabelColor -*/ -void QCPAxis::setLabelFont(const QFont &font) -{ - mLabelFont = font; -} - -/*! - Sets the color of the axis label. - - \see setLabelFont -*/ -void QCPAxis::setLabelColor(const QColor &color) -{ - mLabelColor = color; -} - -/*! - Sets the axis label that will be shown below/above or next to the axis, depending on its orientation. -*/ -void QCPAxis::setLabel(const QString &str) -{ - mLabel = str; -} - -/*! - Sets the distance between the tick labels and the axis label. - \see setTickLabelPadding, setPadding -*/ -void QCPAxis::setLabelPadding(int padding) -{ - mLabelPadding = padding; -} - -/*! - Sets the padding of the axis. - - When \ref QCustomPlot::setAutoMargin is enabled, the padding is the additional distance to the - respective widget border, that is left blank. If \a padding is zero (default), the auto margin - mechanism will find a margin that the axis label (or tick label, if no axis label is set) barely - fits inside the QCustomPlot widget. To give the label closest to the border some freedom, - increase \a padding. - - The axis padding has no meaning if \ref QCustomPlot::setAutoMargin is disabled. - - \see setLabelPadding, setTickLabelPadding -*/ -void QCPAxis::setPadding(int padding) -{ - mPadding = padding; -} - -/*! - Sets the font that is used for tick labels when they are selected. - - \see setTickLabelFont, setSelectable, setSelected, QCustomPlot::setInteractions -*/ -void QCPAxis::setSelectedTickLabelFont(const QFont &font) -{ - mSelectedTickLabelFont = font; -} - -/*! - Sets the font that is used for the axis label when it is selected. - - \see setLabelFont, setSelectable, setSelected, QCustomPlot::setInteractions -*/ -void QCPAxis::setSelectedLabelFont(const QFont &font) -{ - mSelectedLabelFont = font; -} - -/*! - Sets the color that is used for tick labels when they are selected. - - \see setTickLabelColor, setSelectable, setSelected, QCustomPlot::setInteractions -*/ -void QCPAxis::setSelectedTickLabelColor(const QColor &color) -{ - mSelectedTickLabelColor = color; -} - -/*! - Sets the color that is used for the axis label when it is selected. - - \see setLabelColor, setSelectable, setSelected, QCustomPlot::setInteractions -*/ -void QCPAxis::setSelectedLabelColor(const QColor &color) -{ - mSelectedLabelColor = color; -} - -/*! - Sets the pen that is used to draw the axis base line when selected. - - \see setBasePen, setSelectable, setSelected, QCustomPlot::setInteractions -*/ -void QCPAxis::setSelectedBasePen(const QPen &pen) -{ - mSelectedBasePen = pen; -} - -/*! - Sets the pen that is used to draw the (major) ticks when selected. - - \see setTickPen, setSelectable, setSelected, QCustomPlot::setInteractions -*/ -void QCPAxis::setSelectedTickPen(const QPen &pen) -{ - mSelectedTickPen = pen; -} - -/*! - Sets the pen that is used to draw the subticks when selected. - - \see setSubTickPen, setSelectable, setSelected, QCustomPlot::setInteractions -*/ -void QCPAxis::setSelectedSubTickPen(const QPen &pen) -{ - mSelectedSubTickPen = pen; -} - -/*! - If the scale type (\ref setScaleType) is \ref stLinear, \a diff is added to the lower and upper - bounds of the range. The range is simply moved by \a diff. - - If the scale type is \ref stLogarithmic, the range bounds are multiplied by \a diff. This - corresponds to an apparent "linear" move in logarithmic scaling by a distance of log(diff). -*/ -void QCPAxis::moveRange(double diff) -{ - if (mScaleType == stLinear) - { - mRange.lower += diff; - mRange.upper += diff; - } else // mScaleType == stLogarithmic - { - mRange.lower *= diff; - mRange.upper *= diff; - } - emit rangeChanged(mRange); -} - -/*! - Scales the range of this axis by \a factor around the coordinate \a center. For example, if \a - factor is 2.0, \a center is 1.0, then the axis range will double its size, and the point at - coordinate 1.0 won't have changed its position in the QCustomPlot widget (i.e. coordinates - around 1.0 will have moved symmetrically closer to 1.0). -*/ -void QCPAxis::scaleRange(double factor, double center) -{ - - if (mScaleType == stLinear) - { - QCPRange newRange; - newRange.lower = (mRange.lower-center)*factor + center; - newRange.upper = (mRange.upper-center)*factor + center; - if (QCPRange::validRange(newRange)) - mRange = newRange.sanitizedForLinScale(); - } else // mScaleType == stLogarithmic - { - if ((mRange.upper < 0 && center < 0) || (mRange.upper > 0 && center > 0)) // make sure center has same sign as range - { - QCPRange newRange; - newRange.lower = pow(mRange.lower/center, factor)*center; - newRange.upper = pow(mRange.upper/center, factor)*center; - if (QCPRange::validRange(newRange)) - mRange = newRange.sanitizedForLogScale(); - } else - qDebug() << Q_FUNC_INFO << "center of scaling operation doesn't lie in same logarithmic sign domain as range:" << center; - } - emit rangeChanged(mRange); -} - -/*! - Sets the range of this axis to have a certain scale \a ratio to \a otherAxis. For example, if \a - ratio is 1, this axis is the \a yAxis and \a otherAxis is \a xAxis, graphs plotted with those - axes will appear in a 1:1 ratio, independent of the aspect ratio the axis rect has. This is an - operation that changes the range of this axis once, it doesn't fix the scale ratio indefinitely. - Consequently calling this function in the constructor won't have the desired effect, since the - widget's dimensions aren't defined yet, and a resizeEvent will follow. -*/ -void QCPAxis::setScaleRatio(const QCPAxis *otherAxis, double ratio) -{ - int otherPixelSize, ownPixelSize; - - if (otherAxis->orientation() == Qt::Horizontal) - otherPixelSize = otherAxis->mAxisRect.width(); - else - otherPixelSize = otherAxis->mAxisRect.height(); - - if (orientation() == Qt::Horizontal) - ownPixelSize = mAxisRect.width(); - else - ownPixelSize = mAxisRect.height(); - - double newRangeSize = ratio*otherAxis->mRange.size()*ownPixelSize/(double)otherPixelSize; - setRange(range().center(), newRangeSize, Qt::AlignCenter); -} - -/*! - Transforms \a value (in pixel coordinates of the QCustomPlot widget) to axis coordinates. -*/ -double QCPAxis::pixelToCoord(double value) const -{ - if (orientation() == Qt::Horizontal) - { - if (mScaleType == stLinear) - { - if (!mRangeReversed) - return (value-mAxisRect.left())/(double)mAxisRect.width()*mRange.size()+mRange.lower; - else - return -(value-mAxisRect.left())/(double)mAxisRect.width()*mRange.size()+mRange.upper; - } else // mScaleType == stLogarithmic - { - if (!mRangeReversed) - return pow(mRange.upper/mRange.lower, (value-mAxisRect.left())/(double)mAxisRect.width())*mRange.lower; - else - return pow(mRange.upper/mRange.lower, (mAxisRect.left()-value)/(double)mAxisRect.width())*mRange.upper; - } - } else // orientation() == Qt::Vertical - { - if (mScaleType == stLinear) - { - if (!mRangeReversed) - return (mAxisRect.bottom()-value)/(double)mAxisRect.height()*mRange.size()+mRange.lower; - else - return -(mAxisRect.bottom()-value)/(double)mAxisRect.height()*mRange.size()+mRange.upper; - } else // mScaleType == stLogarithmic - { - if (!mRangeReversed) - return pow(mRange.upper/mRange.lower, (mAxisRect.bottom()-value)/(double)mAxisRect.height())*mRange.lower; - else - return pow(mRange.upper/mRange.lower, (value-mAxisRect.bottom())/(double)mAxisRect.height())*mRange.upper; - } - } -} - -/*! - Transforms \a value (in coordinates of the axis) to pixel coordinates of the QCustomPlot widget. -*/ -double QCPAxis::coordToPixel(double value) const -{ - if (orientation() == Qt::Horizontal) - { - if (mScaleType == stLinear) - { - if (!mRangeReversed) - return (value-mRange.lower)/mRange.size()*mAxisRect.width()+mAxisRect.left(); - else - return (mRange.upper-value)/mRange.size()*mAxisRect.width()+mAxisRect.left(); - } else // mScaleType == stLogarithmic - { - if (value >= 0 && mRange.upper < 0) // invalid value for logarithmic scale, just draw it outside visible range - return !mRangeReversed ? mAxisRect.right()+200 : mAxisRect.left()-200; - else if (value <= 0 && mRange.upper > 0) // invalid value for logarithmic scale, just draw it outside visible range - return !mRangeReversed ? mAxisRect.left()-200 : mAxisRect.right()+200; - else - { - if (!mRangeReversed) - return baseLog(value/mRange.lower)/baseLog(mRange.upper/mRange.lower)*mAxisRect.width()+mAxisRect.left(); - else - return baseLog(mRange.upper/value)/baseLog(mRange.upper/mRange.lower)*mAxisRect.width()+mAxisRect.left(); - } - } - } else // orientation() == Qt::Vertical - { - if (mScaleType == stLinear) - { - if (!mRangeReversed) - return mAxisRect.bottom()-(value-mRange.lower)/mRange.size()*mAxisRect.height(); - else - return mAxisRect.bottom()-(mRange.upper-value)/mRange.size()*mAxisRect.height(); - } else // mScaleType == stLogarithmic - { - if (value >= 0 && mRange.upper < 0) // invalid value for logarithmic scale, just draw it outside visible range - return !mRangeReversed ? mAxisRect.top()-200 : mAxisRect.bottom()+200; - else if (value <= 0 && mRange.upper > 0) // invalid value for logarithmic scale, just draw it outside visible range - return !mRangeReversed ? mAxisRect.bottom()+200 : mAxisRect.top()-200; - else - { - if (!mRangeReversed) - return mAxisRect.bottom()-baseLog(value/mRange.lower)/baseLog(mRange.upper/mRange.lower)*mAxisRect.height(); - else - return mAxisRect.bottom()-baseLog(mRange.upper/value)/baseLog(mRange.upper/mRange.lower)*mAxisRect.height(); - } - } - } -} - -/*! - Returns the part of the axis that is hit by \a pos (in pixels). The return value of this function - is independent of the user-selectable parts defined with \ref setSelectable. Further, this - function does not change the current selection state of the axis. - - If the axis is not visible (\ref setVisible), this function always returns \ref spNone. - - \see setSelected, setSelectable, QCustomPlot::setInteractions -*/ -QCPAxis::SelectablePart QCPAxis::selectTest(const QPointF &pos) const -{ - if (!mVisible) - return spNone; - - if (mAxisSelectionBox.contains(pos.toPoint())) - return spAxis; - else if (mTickLabelsSelectionBox.contains(pos.toPoint())) - return spTickLabels; - else if (mLabelSelectionBox.contains(pos.toPoint())) - return spAxisLabel; - else - return spNone; -} - -/*! \internal - - This function is called before the grid and axis is drawn, in order to prepare the tick vector, - sub tick vector and tick label vector. If \ref setAutoTicks is set to true, appropriate tick - values are determined automatically via \ref generateAutoTicks. If it's set to false, the signal - ticksRequest is emitted, which can be used to provide external tick positions. Then the sub tick - vectors and tick label vectors are created. -*/ -void QCPAxis::setupTickVectors() -{ - if ((!mTicks && !mTickLabels && !mGrid->visible()) || mRange.size() <= 0) return; - - // fill tick vectors, either by auto generating or by notifying user to fill the vectors himself - if (mAutoTicks) - { - generateAutoTicks(); - } else - { - emit ticksRequest(); - } - - visibleTickBounds(mLowestVisibleTick, mHighestVisibleTick); - if (mTickVector.isEmpty()) - { - mSubTickVector.clear(); - return; - } - - // generate subticks between ticks: - mSubTickVector.resize((mTickVector.size()-1)*mSubTickCount); - if (mSubTickCount > 0) - { - double subTickStep = 0; - double subTickPosition = 0; - int subTickIndex = 0; - bool done = false; - for (int i=1; i mRange.upper) - { - done = true; - break; - } - mSubTickVector[subTickIndex] = subTickPosition; - subTickIndex++; - } - if (done) break; - } - mSubTickVector.resize(subTickIndex); - } - - // generate tick labels according to tick positions: - mExponentialChar = mParentPlot->locale().exponential(); // will be needed when drawing the numbers generated here, in drawTickLabel() - mPositiveSignChar = mParentPlot->locale().positiveSign(); // will be needed when drawing the numbers generated here, in drawTickLabel() - if (mAutoTickLabels) - { - int vecsize = mTickVector.size(); - mTickVectorLabels.resize(vecsize); - if (mTickLabelType == ltNumber) - { - for (int i=0; ilocale().toString(mTickVector.at(i), mNumberFormatChar, mNumberPrecision); - } else if (mTickLabelType == ltDateTime) - { - for (int i=0; ilocale().toString(QDateTime::fromTime_t(mTickVector.at(i)), mDateTimeFormat); -#else - mTickVectorLabels[i] = mParentPlot->locale().toString(QDateTime::fromMSecsSinceEpoch(mTickVector.at(i)*1000), mDateTimeFormat); -#endif - } - } - } else // mAutoTickLabels == false - { - if (mAutoTicks) // ticks generated automatically, but not ticklabels, so emit ticksRequest here for labels - { - emit ticksRequest(); - } - // make sure provided tick label vector has correct (minimal) length: - if (mTickVectorLabels.size() < mTickVector.size()) - mTickVectorLabels.resize(mTickVector.size()); - } -} - -/*! \internal - - If \ref setAutoTicks is set to true, this function is called by \ref setupTickVectors to - generate reasonable tick positions (and subtick count). The algorithm tries to create - approximately mAutoTickCount ticks (set via \ref setAutoTickCount), taking into account, - that tick mantissas that are divisable by two or end in .5 are nice to look at and practical in - linear scales. If the scale is logarithmic, one tick is generated at every power of the current - logarithm base, set via \ref setScaleLogBase. -*/ -void QCPAxis::generateAutoTicks() -{ - if (mScaleType == stLinear) - { - if (mAutoTickStep) - { - // Generate tick positions according to linear scaling: - mTickStep = mRange.size()/(double)(mAutoTickCount+1e-10); // mAutoTickCount ticks on average, the small addition is to prevent jitter on exact integers - double magnitudeFactor = qPow(10.0, qFloor(qLn(mTickStep)/qLn(10.0))); // get magnitude factor e.g. 0.01, 1, 10, 1000 etc. - double tickStepMantissa = mTickStep/magnitudeFactor; - if (tickStepMantissa < 5) - { - // round digit after decimal point to 0.5 - mTickStep = (int)(tickStepMantissa*2)/2.0*magnitudeFactor; - } else - { - // round to first digit in multiples of 2 - mTickStep = (int)((tickStepMantissa/10.0)*5)/5.0*10*magnitudeFactor; - } - } - if (mAutoSubTicks) - mSubTickCount = calculateAutoSubTickCount(mTickStep); - // Generate tick positions according to mTickStep: - int firstStep = floor(mRange.lower/mTickStep); - int lastStep = ceil(mRange.upper/mTickStep); - int tickcount = lastStep-firstStep+1; - if (tickcount < 0) tickcount = 0; - mTickVector.resize(tickcount); - for (int i=0; i 0 && mRange.upper > 0) // positive range - { - double lowerMag = basePow((int)floor(baseLog(mRange.lower))); - double currentMag = lowerMag; - mTickVector.clear(); - mTickVector.append(currentMag); - while (currentMag < mRange.upper && currentMag > 0) // currentMag might be zero for ranges ~1e-300, just cancel in that case - { - currentMag *= mScaleLogBase; - mTickVector.append(currentMag); - } - } else if (mRange.lower < 0 && mRange.upper < 0) // negative range - { - double lowerMag = -basePow((int)ceil(baseLog(-mRange.lower))); - double currentMag = lowerMag; - mTickVector.clear(); - mTickVector.append(currentMag); - while (currentMag < mRange.upper && currentMag < 0) // currentMag might be zero for ranges ~1e-300, just cancel in that case - { - currentMag /= mScaleLogBase; - mTickVector.append(currentMag); - } - } else // invalid range for logarithmic scale, because lower and upper have different sign - { - mTickVector.clear(); - qDebug() << Q_FUNC_INFO << "Invalid range for logarithmic plot: " << mRange.lower << "-" << mRange.upper; - } - } -} - -/*! \internal - - Called by generateAutoTicks when \ref setAutoSubTicks is set to true. Depending on the \a - tickStep between two major ticks on the axis, a different number of sub ticks is appropriate. For - Example taking 4 sub ticks for a \a tickStep of 1 makes more sense than taking 5 sub ticks, - because this corresponds to a sub tick step of 0.2, instead of the less intuitive 0.16666. Note - that a subtick count of 4 means dividing the major tick step into 5 sections. - - This is implemented by a hand made lookup for integer tick steps as well as fractional tick steps - with a fractional part of (approximately) 0.5. If a tick step is different (i.e. has no - fractional part close to 0.5), the currently set sub tick count (\ref setSubTickCount) is - returned. -*/ -int QCPAxis::calculateAutoSubTickCount(double tickStep) const -{ - int result = mSubTickCount; // default to current setting, if no proper value can be found - - // get mantissa of tickstep: - double magnitudeFactor = qPow(10.0, qFloor(qLn(tickStep)/qLn(10.0))); // get magnitude factor e.g. 0.01, 1, 10, 1000 etc. - double tickStepMantissa = tickStep/magnitudeFactor; - - // separate integer and fractional part of mantissa: - double epsilon = 0.01; - double intPartf; - int intPart; - double fracPart = modf(tickStepMantissa, &intPartf); - intPart = intPartf; - - // handle cases with (almost) integer mantissa: - if (fracPart < epsilon || 1.0-fracPart < epsilon) - { - if (1.0-fracPart < epsilon) - intPart++; - switch (intPart) - { - case 1: result = 4; break; // 1.0 -> 0.2 substep - case 2: result = 3; break; // 2.0 -> 0.5 substep - case 3: result = 2; break; // 3.0 -> 1.0 substep - case 4: result = 3; break; // 4.0 -> 1.0 substep - case 5: result = 4; break; // 5.0 -> 1.0 substep - case 6: result = 2; break; // 6.0 -> 2.0 substep - case 7: result = 6; break; // 7.0 -> 1.0 substep - case 8: result = 3; break; // 8.0 -> 2.0 substep - case 9: result = 2; break; // 9.0 -> 3.0 substep - } - } else - { - // handle cases with significantly fractional mantissa: - if (qAbs(fracPart-0.5) < epsilon) // *.5 mantissa - { - switch (intPart) - { - case 1: result = 2; break; // 1.5 -> 0.5 substep - case 2: result = 4; break; // 2.5 -> 0.5 substep - case 3: result = 4; break; // 3.5 -> 0.7 substep - case 4: result = 2; break; // 4.5 -> 1.5 substep - case 5: result = 4; break; // 5.5 -> 1.1 substep (won't occur with autoTickStep from here on) - case 6: result = 4; break; // 6.5 -> 1.3 substep - case 7: result = 2; break; // 7.5 -> 2.5 substep - case 8: result = 4; break; // 8.5 -> 1.7 substep - case 9: result = 4; break; // 9.5 -> 1.9 substep - } - } - // if mantissa fraction isnt 0.0 or 0.5, don't bother finding good sub tick marks, leave default - } - - return result; -} - -/*! \internal - - The main draw function of an axis, called by QCustomPlot::draw for each axis. Draws axis - baseline, major ticks, subticks, tick labels and axis label. - - The selection boxes (mAxisSelectionBox, mTickLabelsSelectionBox, mLabelSelectionBox) are set - here, too. -*/ -void QCPAxis::draw(QCPPainter *painter) -{ - QPoint origin; - if (mAxisType == atLeft) - origin = mAxisRect.bottomLeft(); - else if (mAxisType == atRight) - origin = mAxisRect.bottomRight(); - else if (mAxisType == atTop) - origin = mAxisRect.topLeft(); - else if (mAxisType == atBottom) - origin = mAxisRect.bottomLeft(); - - double xCor = 0, yCor = 0; // paint system correction, for pixel exact matches (affects baselines and ticks of top/right axes) - switch (mAxisType) - { - case atTop: yCor = -1; break; - case atRight: xCor = 1; break; - default: break; - } - - int margin = 0; - int lowTick = mLowestVisibleTick; - int highTick = mHighestVisibleTick; - double t; // helper variable, result of coordinate-to-pixel transforms - - // draw baseline: - painter->setPen(getBasePen()); - if (orientation() == Qt::Horizontal) - painter->drawLine(QLineF(origin+QPointF(xCor, yCor), origin+QPointF(mAxisRect.width()+xCor, yCor))); - else - painter->drawLine(QLineF(origin+QPointF(xCor, yCor), origin+QPointF(xCor, -mAxisRect.height()+yCor))); - - // draw ticks: - if (mTicks) - { - painter->setPen(getTickPen()); - // direction of ticks ("inward" is right for left axis and left for right axis) - int tickDir = (mAxisType == atBottom || mAxisType == atRight) ? -1 : 1; - if (orientation() == Qt::Horizontal) - { - for (int i=lowTick; i <= highTick; ++i) - { - t = coordToPixel(mTickVector.at(i)); // x - painter->drawLine(QLineF(t+xCor, origin.y()-mTickLengthOut*tickDir+yCor, t+xCor, origin.y()+mTickLengthIn*tickDir+yCor)); - } - } else - { - for (int i=lowTick; i <= highTick; ++i) - { - t = coordToPixel(mTickVector.at(i)); // y - painter->drawLine(QLineF(origin.x()-mTickLengthOut*tickDir+xCor, t+yCor, origin.x()+mTickLengthIn*tickDir+xCor, t+yCor)); - } - } - } - - // draw subticks: - if (mTicks && mSubTickCount > 0) - { - painter->setPen(getSubTickPen()); - // direction of ticks ("inward" is right for left axis and left for right axis) - int tickDir = (mAxisType == atBottom || mAxisType == atRight) ? -1 : 1; - if (orientation() == Qt::Horizontal) - { - for (int i=0; idrawLine(QLineF(t+xCor, origin.y()-mSubTickLengthOut*tickDir+yCor, t+xCor, origin.y()+mSubTickLengthIn*tickDir+yCor)); - } - } else - { - for (int i=0; idrawLine(QLineF(origin.x()-mSubTickLengthOut*tickDir+xCor, t+yCor, origin.x()+mSubTickLengthIn*tickDir+xCor, t+yCor)); - } - } - } - margin += qMax(0, qMax(mTickLengthOut, mSubTickLengthOut)); - - // tick labels: - QSize tickLabelsSize(0, 0); // size of largest tick label, for offset calculation of axis label - if (mTickLabels) - { - margin += mTickLabelPadding; - painter->setFont(getTickLabelFont()); - painter->setPen(QPen(getTickLabelColor())); - for (int i=lowTick; i <= highTick; ++i) - { - t = coordToPixel(mTickVector.at(i)); - drawTickLabel(painter, t, margin, mTickVectorLabels.at(i), &tickLabelsSize); - } - } - if (orientation() == Qt::Horizontal) - margin += tickLabelsSize.height(); - else - margin += tickLabelsSize.width(); - - // axis label: - QRect labelBounds; - if (!mLabel.isEmpty()) - { - margin += mLabelPadding; - painter->setFont(getLabelFont()); - painter->setPen(QPen(getLabelColor())); - labelBounds = painter->fontMetrics().boundingRect(0, 0, 0, 0, Qt::TextDontClip, mLabel); - if (mAxisType == atLeft) - { - QTransform oldTransform = painter->transform(); - painter->translate((origin.x()-margin-labelBounds.height()), origin.y()); - painter->rotate(-90); - painter->drawText(0, 0, mAxisRect.height(), labelBounds.height(), Qt::TextDontClip | Qt::AlignCenter, mLabel); - painter->setTransform(oldTransform); - } - else if (mAxisType == atRight) - { - QTransform oldTransform = painter->transform(); - painter->translate((origin.x()+margin+labelBounds.height()), origin.y()-mAxisRect.height()); - painter->rotate(90); - painter->drawText(0, 0, mAxisRect.height(), labelBounds.height(), Qt::TextDontClip | Qt::AlignCenter, mLabel); - painter->setTransform(oldTransform); - } - else if (mAxisType == atTop) - painter->drawText(origin.x(), origin.y()-margin-labelBounds.height(), mAxisRect.width(), labelBounds.height(), Qt::TextDontClip | Qt::AlignCenter, mLabel); - else if (mAxisType == atBottom) - painter->drawText(origin.x(), origin.y()+margin, mAxisRect.width(), labelBounds.height(), Qt::TextDontClip | Qt::AlignCenter, mLabel); - } - - // set selection boxes: - int selAxisOutSize = qMax(qMax(mTickLengthOut, mSubTickLengthOut), mParentPlot->selectionTolerance()); - int selAxisInSize = mParentPlot->selectionTolerance(); - int selTickLabelSize = (orientation()==Qt::Horizontal ? tickLabelsSize.height() : tickLabelsSize.width()); - int selTickLabelOffset = qMax(mTickLengthOut, mSubTickLengthOut)+mTickLabelPadding; - int selLabelSize = labelBounds.height(); - int selLabelOffset = selTickLabelOffset+selTickLabelSize+mLabelPadding; - if (mAxisType == atLeft) - { - mAxisSelectionBox.setCoords(mAxisRect.left()-selAxisOutSize, mAxisRect.top(), mAxisRect.left()+selAxisInSize, mAxisRect.bottom()); - mTickLabelsSelectionBox.setCoords(mAxisRect.left()-selTickLabelOffset-selTickLabelSize, mAxisRect.top(), mAxisRect.left()-selTickLabelOffset, mAxisRect.bottom()); - mLabelSelectionBox.setCoords(mAxisRect.left()-selLabelOffset-selLabelSize, mAxisRect.top(), mAxisRect.left()-selLabelOffset, mAxisRect.bottom()); - } else if (mAxisType == atRight) - { - mAxisSelectionBox.setCoords(mAxisRect.right()-selAxisInSize, mAxisRect.top(), mAxisRect.right()+selAxisOutSize, mAxisRect.bottom()); - mTickLabelsSelectionBox.setCoords(mAxisRect.right()+selTickLabelOffset+selTickLabelSize, mAxisRect.top(), mAxisRect.right()+selTickLabelOffset, mAxisRect.bottom()); - mLabelSelectionBox.setCoords(mAxisRect.right()+selLabelOffset+selLabelSize, mAxisRect.top(), mAxisRect.right()+selLabelOffset, mAxisRect.bottom()); - } else if (mAxisType == atTop) - { - mAxisSelectionBox.setCoords(mAxisRect.left(), mAxisRect.top()-selAxisOutSize, mAxisRect.right(), mAxisRect.top()+selAxisInSize); - mTickLabelsSelectionBox.setCoords(mAxisRect.left(), mAxisRect.top()-selTickLabelOffset-selTickLabelSize, mAxisRect.right(), mAxisRect.top()-selTickLabelOffset); - mLabelSelectionBox.setCoords(mAxisRect.left(), mAxisRect.top()-selLabelOffset-selLabelSize, mAxisRect.right(), mAxisRect.top()-selLabelOffset); - } else if (mAxisType == atBottom) - { - mAxisSelectionBox.setCoords(mAxisRect.left(), mAxisRect.bottom()-selAxisInSize, mAxisRect.right(), mAxisRect.bottom()+selAxisOutSize); - mTickLabelsSelectionBox.setCoords(mAxisRect.left(), mAxisRect.bottom()+selTickLabelOffset+selTickLabelSize, mAxisRect.right(), mAxisRect.bottom()+selTickLabelOffset); - mLabelSelectionBox.setCoords(mAxisRect.left(), mAxisRect.bottom()+selLabelOffset+selLabelSize, mAxisRect.right(), mAxisRect.bottom()+selLabelOffset); - } - // draw hitboxes for debug purposes: - //painter->drawRects(QVector() << mAxisSelectionBox << mTickLabelsSelectionBox << mLabelSelectionBox); -} - -/*! \internal - - Draws a single tick label with the provided \a painter. The tick label is always bound to an axis - in one direction (distance to axis in that direction is however controllable via \a - distanceToAxis in pixels). The position in the other direction is passed in the \a position - parameter. Hence for the bottom axis, \a position would indicate the horizontal pixel position - (not coordinate!), at which the label should be drawn. - - In order to draw the axis label after all the tick labels in a position, that doesn't overlap - with the tick labels, we need to know the largest tick label size. This is done by passing a \a - tickLabelsSize to all \ref drawTickLabel calls during the process of drawing all tick labels of - one axis. \a tickLabelSize is only expanded, if the drawn label exceeds the value \a - tickLabelsSize currently holds. - - This function is also responsible for turning ugly exponential numbers "5.5e9" into a more - beautifully typeset format "5.5 [multiplication sign] 10 [superscript] 9". This feature is - controlled with \ref setNumberFormat. - - The label is drawn with the font and pen that are currently set on the \a painter. To draw - superscripted powers, the font is temporarily made smaller by a fixed factor. -*/ -void QCPAxis::drawTickLabel(QCPPainter *painter, double position, int distanceToAxis, const QString &text, QSize *tickLabelsSize) -{ - // warning: if you change anything here, also adapt getMaxTickLabelSize() accordingly! - - // determine whether beautiful decimal powers should be used - bool useBeautifulPowers = false; - int ePos = -1; - if (mAutoTickLabels && mNumberBeautifulPowers && mTickLabelType == ltNumber) - { - ePos = text.indexOf('e'); - if (ePos > -1) - useBeautifulPowers = true; - } - - // calculate text bounding rects and do string preparation for beautiful decimal powers: - QRect bounds, baseBounds, expBounds; - QString basePart, expPart; - QFont bugFixFont(painter->font()); - bugFixFont.setPointSizeF(bugFixFont.pointSizeF()+0.05); // QFontMetrics.boundingRect has a bug for exact point sizes that make the results oscillate due to internal rounding - QFont expFont; - if (useBeautifulPowers) - { - // split string parts for part of number/symbol that will be drawn normally and part that will be drawn as exponent: - basePart = text.left(ePos); - // in log scaling, we want to turn "1*10^n" into "10^n", else add multiplication sign and decimal base: - if (mScaleType == stLogarithmic && basePart == "1") - basePart = "10"; - else - basePart += (mNumberMultiplyCross ? QString(QChar(215)) : QString(QChar(183))) + "10"; - expPart = text.mid(ePos+1); - // clip "+" and leading zeros off expPart: - while (expPart.at(1) == '0' && expPart.length() > 2) // length > 2 so we leave one zero when numberFormatChar is 'e' - expPart.remove(1, 1); - if (expPart.at(0) == mPositiveSignChar) - expPart.remove(0, 1); - // prepare smaller font for exponent: - expFont = painter->font(); - expFont.setPointSize(expFont.pointSize()*0.75); - // calculate bounding rects of base part, exponent part and total one: - QFontMetrics fontMetrics(bugFixFont); - baseBounds = fontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip, basePart); - QFontMetrics expFontMetrics(expFont); - expBounds = expFontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip, expPart); - bounds = baseBounds.adjusted(0, 0, expBounds.width(), 0); - } else // useBeautifulPowers == false - { - QFontMetrics fontMetrics(bugFixFont); - bounds = fontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip | Qt::AlignHCenter, text); - } - - // if using rotated tick labels, transform bounding rect, too: - QRect rotatedBounds = bounds; - if (!qFuzzyIsNull(mTickLabelRotation)) - { - QTransform transform; - transform.rotate(mTickLabelRotation); - rotatedBounds = transform.mapRect(bounds); - } - // expand passed tickLabelsSize if current tick label is larger: - if (rotatedBounds.width() > tickLabelsSize->width()) - tickLabelsSize->setWidth(rotatedBounds.width()); - if (rotatedBounds.height() > tickLabelsSize->height()) - tickLabelsSize->setHeight(rotatedBounds.height()); - - /* - calculate coordinates (non-trivial, for best visual appearance): short explanation for bottom - axis: The anchor, i.e. the point in the label that is placed horizontally under the - corresponding tick is always on the label side that is closer to the axis (e.g. the left side - of the text when we're rotating clockwise). On that side, the height is halved and the - resulting point is defined the anchor. This way, a 90 degree rotated text will be centered - under the tick (i.e. displaced horizontally by half its height). At the same time, a 45 degree - rotated text will "point toward" its tick, as is typical for rotated tick labels. - */ - bool doRotation = !qFuzzyIsNull(mTickLabelRotation); - double radians = mTickLabelRotation/180.0*M_PI; - int x=0,y=0; - if (mAxisType == atLeft) - { - if (doRotation) - { - if (mTickLabelRotation > 0) - { - x = mAxisRect.left()-qCos(radians)*bounds.width()-distanceToAxis; - y = position-qSin(radians)*bounds.width()-qCos(radians)*bounds.height()/2.0; - } else - { - x = mAxisRect.left()-qCos(-radians)*bounds.width()-qSin(-radians)*bounds.height()-distanceToAxis; - y = position+qSin(-radians)*bounds.width()-qCos(-radians)*bounds.height()/2.0; - } - } else - { - x = mAxisRect.left()-bounds.width()-distanceToAxis; - y = position-bounds.height()/2.0; - } - } else if (mAxisType == atRight) - { - if (doRotation) - { - if (mTickLabelRotation > 0) - { - x = mAxisRect.right()+qSin(radians)*bounds.height()+distanceToAxis; - y = position-qCos(radians)*bounds.height()/2.0; - } else - { - x = mAxisRect.right()+distanceToAxis; - y = position-qCos(-radians)*bounds.height()/2.0; - } - } else - { - x = mAxisRect.right()+distanceToAxis; - y = position-bounds.height()/2.0; - } - } else if (mAxisType == atTop) - { - if (doRotation) - { - if (mTickLabelRotation > 0) - { - x = position-qCos(radians)*bounds.width()+qSin(radians)*bounds.height()/2.0; - y = mAxisRect.top()-qSin(radians)*bounds.width()-qCos(radians)*bounds.height()-distanceToAxis; - } else - { - x = position-qSin(-radians)*bounds.height()/2.0; - y = mAxisRect.top()-qCos(-radians)*bounds.height()-distanceToAxis; - } - } else - { - x = position-bounds.width()/2.0; - y = mAxisRect.top()-bounds.height()-distanceToAxis; - } - } else if (mAxisType == atBottom) - { - if (doRotation) - { - if (mTickLabelRotation > 0) - { - x = position+qSin(radians)*bounds.height()/2.0; - y = mAxisRect.bottom()+distanceToAxis; - } else - { - x = position-qCos(-radians)*bounds.width()-qSin(-radians)*bounds.height()/2.0; - y = mAxisRect.bottom()+qSin(-radians)*bounds.width()+distanceToAxis; - } - } else - { - x = position-bounds.width()/2.0; - y = mAxisRect.bottom()+distanceToAxis; - } - } - - // if label would be partly clipped by widget border on sides, don't draw it: - if (orientation() == Qt::Horizontal) - { - if (x+bounds.width() > mParentPlot->mViewport.right() || - x < mParentPlot->mViewport.left()) - return; - } else - { - if (y+bounds.height() > mParentPlot->mViewport.bottom() || - y < mParentPlot->mViewport.top()) - return; - } - - // transform painter to position/rotation: - QTransform oldTransform = painter->transform(); - painter->translate(x, y); - if (doRotation) - painter->rotate(mTickLabelRotation); - // draw text: - if (useBeautifulPowers) - { - // draw base: - painter->drawText(0, 0, 0, 0, Qt::TextDontClip, basePart); - // draw exponent: - QFont normalFont = painter->font(); - painter->setFont(expFont); - painter->drawText(baseBounds.width()+1, 0, expBounds.width(), expBounds.height(), Qt::TextDontClip, expPart); - painter->setFont(normalFont); - } else // useBeautifulPowers == false - { - painter->drawText(0, 0, bounds.width(), bounds.height(), Qt::TextDontClip | Qt::AlignHCenter, text); - } - - // reset rotation/translation transform to what it was before: - painter->setTransform(oldTransform); -} - -/*! \internal - - Simulates the steps done by \ref drawTickLabel by calculating bounding boxes of the text label to - be drawn, depending on number format etc. Since we only want the largest tick label for the - margin calculation, the passed \a tickLabelsSize isn't overridden with the calculated label size, - but it's only expanded, if it's currently set to a smaller width/height. -*/ -void QCPAxis::getMaxTickLabelSize(const QFont &font, const QString &text, QSize *tickLabelsSize) const -{ - // This function does the same as drawTickLabel but omits the actual drawing - // changes involve creating extra QFontMetrics instances for font, since painter->fontMetrics() isn't available - - // determine whether beautiful powers should be used - bool useBeautifulPowers = false; - int ePos=-1; - if (mAutoTickLabels && mNumberBeautifulPowers && mTickLabelType == ltNumber) - { - ePos = text.indexOf(mExponentialChar); - if (ePos > -1) - useBeautifulPowers = true; - } - - // calculate and draw text, depending on whether beautiful powers are applicable or not: - QRect bounds, baseBounds, expBounds; - QString basePart, expPart; - QFont bugFixFont(font); - bugFixFont.setPointSizeF(bugFixFont.pointSizeF()+0.05); // QFontMetrics.boundingRect has a bug for exact point sizes that make the results oscillate due to internal rounding - QFont expFont; - if (useBeautifulPowers) - { - // split string parts for part of number/symbol that will be drawn normally and part that will be drawn as exponent: - basePart = text.left(ePos); - // in log scaling, we want to turn "1*10^n" into "10^n", else add multiplication sign and decimal base: - if (mScaleType == stLogarithmic && basePart == "1") - basePart = "10"; - else - basePart += (mNumberMultiplyCross ? QString(QChar(215)) : QString(QChar(183))) + "10"; - expPart = text.mid(ePos+1); - // clip "+" and leading zeros off expPart: - while (expPart.at(1) == '0' && expPart.length() > 2) // length > 2 so we leave one zero when numberFormatChar is 'e' - expPart.remove(1, 1); - if (expPart.at(0) == mPositiveSignChar) - expPart.remove(0, 1); - // prepare smaller font for exponent: - expFont = font; - expFont.setPointSize(expFont.pointSize()*0.75); - // calculate bounding rects of base part, exponent part and total one: - QFontMetrics baseFontMetrics(bugFixFont); - baseBounds = baseFontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip, basePart); - QFontMetrics expFontMetrics(expFont); - expBounds = expFontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip, expPart); - bounds = baseBounds.adjusted(0, 0, expBounds.width(), 0); - } else // useBeautifulPowers == false - { - QFontMetrics fontMetrics(bugFixFont); - bounds = fontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip | Qt::AlignHCenter, text); - } - - // if rotated tick labels, transform bounding rect, too: - QRect rotatedBounds = bounds; - if (!qFuzzyIsNull(mTickLabelRotation)) - { - QTransform transform; - transform.rotate(mTickLabelRotation); - rotatedBounds = transform.mapRect(bounds); - } - - // expand passed tickLabelsSize if current tick label is larger: - if (rotatedBounds.width() > tickLabelsSize->width()) - tickLabelsSize->setWidth(rotatedBounds.width()); - if (rotatedBounds.height() > tickLabelsSize->height()) - tickLabelsSize->setHeight(rotatedBounds.height()); -} - -/*! \internal - - Handles the selection \a event and returns true when the selection event hit any parts of the - axis. If the selection state of any parts of the axis was changed, the output parameter \a - modified is set to true. - - When \a additiveSelecton is true, any new selections become selected in addition to the recent - selections. The recent selections are not cleared. Further, clicking on one object multiple times - in additive selection mode, toggles the selection of that object on and off. - - To indicate that an event deselects the axis (i.e. the parts that are deselectable by the user, - see \ref setSelectable), pass 0 as \a event. -*/ -bool QCPAxis::handleAxisSelection(QMouseEvent *event, bool additiveSelection, bool &modified) -{ - bool selectionFound = false; - if (event) - { - SelectablePart selectedAxisPart = selectTest(event->pos()); - if (selectedAxisPart == spNone || !selectable().testFlag(selectedAxisPart)) - { - // deselect parts that are changeable (selectable): - SelectableParts newState = selected() & ~selectable(); - if (newState != selected() && !additiveSelection) - { - modified = true; - setSelected(newState); - } - } else - { - selectionFound = true; - if (additiveSelection) - { - // additive selection, so toggle selected part: - setSelected(selected() ^ selectedAxisPart); - modified = true; - } else - { - // not additive selection, so select part and deselect all others that are changeable (selectable): - SelectableParts newState = (selected() & ~selectable()) | selectedAxisPart; - if (newState != selected()) - { - modified = true; - setSelected(newState); - } - } - } - } else // event == 0, so deselect all changeable parts - { - SelectableParts newState = selected() & ~selectable(); - if (newState != selected()) - { - modified = true; - setSelected(newState); - } - } - return selectionFound; -} - -/*! \internal - - A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter - before drawing axis lines. - - This is the antialiasing state the painter passed to the \ref draw method is in by default. - - This function takes into account the local setting of the antialiasing flag as well as - the overrides set e.g. with \ref QCustomPlot::setNotAntialiasedElements. - - \see setAntialiased -*/ -void QCPAxis::applyDefaultAntialiasingHint(QCPPainter *painter) const -{ - applyAntialiasingHint(painter, mAntialiased, QCP::aeAxes); -} - -/*! \internal - - Returns via \a lowIndex and \a highIndex, which ticks in the current tick vector are visible in - the current range. The return values are indices of the tick vector, not the positions of the - ticks themselves. - - The actual use of this function is when we have an externally provided tick vector, which might - exceed far beyond the currently displayed range, and would cause unnecessary calculations e.g. of - subticks. -*/ -void QCPAxis::visibleTickBounds(int &lowIndex, int &highIndex) const -{ - lowIndex = 0; - highIndex = -1; - // make sure only ticks that are in visible range are returned - for (int i=0; i < mTickVector.size(); ++i) - { - lowIndex = i; - if (mTickVector.at(i) >= mRange.lower) break; - } - for (int i=mTickVector.size()-1; i >= 0; --i) - { - highIndex = i; - if (mTickVector.at(i) <= mRange.upper) break; - } -} - -/*! \internal - - A log function with the base mScaleLogBase, used mostly for coordinate transforms in logarithmic - scales with arbitrary log base. Uses the buffered mScaleLogBaseLogInv for faster calculation. - This is set to 1.0/qLn(mScaleLogBase) in \ref setScaleLogBase. - - \see basePow, setScaleLogBase, setScaleType -*/ -double QCPAxis::baseLog(double value) const -{ - return qLn(value)*mScaleLogBaseLogInv; -} - -/*! \internal - - A power function with the base mScaleLogBase, used mostly for coordinate transforms in - logarithmic scales with arbitrary log base. - - \see baseLog, setScaleLogBase, setScaleType -*/ -double QCPAxis::basePow(double value) const -{ - return qPow(mScaleLogBase, value); -} - -/*! \internal - - Returns the pen that is used to draw the axis base line. Depending on the selection state, this - is either mSelectedBasePen or mBasePen. -*/ -QPen QCPAxis::getBasePen() const -{ - return mSelected.testFlag(spAxis) ? mSelectedBasePen : mBasePen; -} - -/*! \internal - - Returns the pen that is used to draw the (major) ticks. Depending on the selection state, this - is either mSelectedTickPen or mTickPen. -*/ -QPen QCPAxis::getTickPen() const -{ - return mSelected.testFlag(spAxis) ? mSelectedTickPen : mTickPen; -} - -/*! \internal - - Returns the pen that is used to draw the subticks. Depending on the selection state, this - is either mSelectedSubTickPen or mSubTickPen. -*/ -QPen QCPAxis::getSubTickPen() const -{ - return mSelected.testFlag(spAxis) ? mSelectedSubTickPen : mSubTickPen; -} - -/*! \internal - - Returns the font that is used to draw the tick labels. Depending on the selection state, this - is either mSelectedTickLabelFont or mTickLabelFont. -*/ -QFont QCPAxis::getTickLabelFont() const -{ - return mSelected.testFlag(spTickLabels) ? mSelectedTickLabelFont : mTickLabelFont; -} - -/*! \internal - - Returns the font that is used to draw the axis label. Depending on the selection state, this - is either mSelectedLabelFont or mLabelFont. -*/ -QFont QCPAxis::getLabelFont() const -{ - return mSelected.testFlag(spAxisLabel) ? mSelectedLabelFont : mLabelFont; -} - -/*! \internal - - Returns the color that is used to draw the tick labels. Depending on the selection state, this - is either mSelectedTickLabelColor or mTickLabelColor. -*/ -QColor QCPAxis::getTickLabelColor() const -{ - return mSelected.testFlag(spTickLabels) ? mSelectedTickLabelColor : mTickLabelColor; -} - -/*! \internal - - Returns the color that is used to draw the axis label. Depending on the selection state, this - is either mSelectedLabelColor or mLabelColor. -*/ -QColor QCPAxis::getLabelColor() const -{ - return mSelected.testFlag(spAxisLabel) ? mSelectedLabelColor : mLabelColor; -} - -/*! \internal - - Simulates the steps of \ref draw by calculating all appearing text bounding boxes. From this - information, the appropriate margin for this axis is determined, so nothing is drawn beyond the - widget border in the actual \ref draw function (if \ref QCustomPlot::setAutoMargin is set to - true). - - The margin consists of: tick label padding, tick label size, label padding, label size. The - return value is the calculated margin for this axis. Thus, an axis with axis type \ref atLeft - will return an appropriate left margin, \ref atBottom will return an appropriate bottom margin - and so forth. - - \warning if anything is changed in this function, make sure it's synchronized with the actual - drawing function \ref draw. -*/ -int QCPAxis::calculateMargin() const -{ - // run through similar steps as QCPAxis::draw, and caluclate margin needed to fit axis and its labels - int margin = 0; - - if (mVisible) - { - int lowTick, highTick; - visibleTickBounds(lowTick, highTick); - // get length of tick marks reaching outside axis rect: - margin += qMax(0, qMax(mTickLengthOut, mSubTickLengthOut)); - // calculate size of tick labels: - QSize tickLabelsSize(0, 0); - if (mTickLabels) - { - for (int i=lowTick; i <= highTick; ++i) - { - getMaxTickLabelSize(mTickLabelFont, mTickVectorLabels.at(i), &tickLabelsSize); // don't use getTickLabelFont() because we don't want margin to possibly change on selection - } - if (orientation() == Qt::Horizontal) - margin += tickLabelsSize.height() + mTickLabelPadding; - else - margin += tickLabelsSize.width() + mTickLabelPadding; - } - // calculate size of axis label (only height needed, because left/right labels are rotated by 90 degrees): - if (!mLabel.isEmpty()) - { - QFontMetrics fontMetrics(mLabelFont); // don't use getLabelFont() because we don't want margin to possibly change on selection - QRect bounds; - bounds = fontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip | Qt::AlignHCenter | Qt::AlignVCenter, mLabel); - margin += bounds.height() + mLabelPadding; - } - } - margin += mPadding; - - if (margin < 15) // need a bit of margin if no axis text is shown at all (i.e. only baseline and tick lines, or no axis at all) - margin = 15; - return margin; -} - - -// ================================================================================ -// =================== QCustomPlot -// ================================================================================ - -/*! \class QCustomPlot - \brief The central class of the library, the QWidget which displays the plot and interacts with the user. - - For tutorials on how to use QCustomPlot, see the website\n - http://www.WorksLikeClockWork.com/index.php/components/qt-plotting-widget -*/ - -/* start of documentation of inline functions */ - -/*! \fn QRect QCustomPlot::viewport() const - - Returns the viewport rect of this QCustomPlot instance. The viewport is the area the plot is - drawn in, all mechanisms, e.g. margin caluclation take the viewport to be the outer border of the - plot. The viewport normally is the rect() of the QCustomPlot widget, i.e. a rect with top left - (0, 0) and size of the QCustomPlot widget. - - Don't confuse the viewport with the axisRect. An axisRect is the rect defined by two axes, where - the graphs/plottables are drawn in. The viewport is larger and contains also the axes themselves, their - tick numbers, their labels, the plot title etc. - - Only when saving to a file (see \ref savePng, savePdf etc.) the viewport is temporarily modified - to allow saving plots with sizes independent of the current widget size. -*/ - -/* end of documentation of inline functions */ -/* start of documentation of signals */ - -/*! \fn void QCustomPlot::mouseDoubleClick(QMouseEvent *event) - - This signal is emitted when the QCustomPlot receives a mouse double click event. -*/ - -/*! \fn void QCustomPlot::mousePress(QMouseEvent *event) - - This signal is emitted when the QCustomPlot receives a mouse press event. - - It is emitted before the QCustomPlot handles its range dragging mechanism, so a slot connected to - this signal can still influence the behaviour e.g. with \ref setRangeDrag or \ref - setRangeDragAxes. -*/ - -/*! \fn void QCustomPlot::mouseMove(QMouseEvent *event) - - This signal is emitted when the QCustomPlot receives a mouse move event. - - It is emitted before the QCustomPlot handles its range dragging mechanism, so a slot connected to - this signal can still influence the behaviour e.g. with \ref setRangeDrag. - - \warning It is discouraged to change the drag-axes with \ref setRangeDragAxes here, because the - dragging starting point was saved the moment the mouse was pressed. Thus it only has a sensible - meaning for the range drag axes that were set at that moment. If you want to change the drag - axes, consider doing this in the \ref mousePress signal instead. -*/ - -/*! \fn void QCustomPlot::mouseRelease(QMouseEvent *event) - - This signal is emitted when the QCustomPlot receives a mouse release event. - - It is emitted before the QCustomPlot handles its selection mechanism, so a slot connected to this - signal can still influence the behaviour e.g. with \ref setInteractions or \ref - QCPAbstractPlottable::setSelectable. -*/ - -/*! \fn void QCustomPlot::mouseWheel(QMouseEvent *event) - - This signal is emitted when the QCustomPlot receives a mouse wheel event. - - It is emitted before the QCustomPlot handles its range zooming mechanism, so a slot connected to - this signal can still influence the behaviour e.g. with \ref setRangeZoom, \ref setRangeZoomAxes - or \ref setRangeZoomFactor. -*/ - -/*! \fn void QCustomPlot::plottableClick(QCPAbstractPlottable *plottable, QMouseEvent *event) - - This signal is emitted when a plottable is clicked. - - \a event is the mouse event that caused the click and \a plottable is the plottable that received - the click. - - \see plottableDoubleClick -*/ - -/*! \fn void QCustomPlot::plottableDoubleClick(QCPAbstractPlottable *plottable, QMouseEvent *event) - - This signal is emitted when a plottable is double clicked. - - \a event is the mouse event that caused the click and \a plottable is the plottable that received - the click. - - \see plottableClick -*/ - -/*! \fn void QCustomPlot::itemClick(QCPAbstractItem *item, QMouseEvent *event) - - This signal is emitted when an item is clicked. - - \a event is the mouse event that caused the click and \a item is the item that received the - click. - - \see itemDoubleClick -*/ - -/*! \fn void QCustomPlot::itemDoubleClick(QCPAbstractItem *item, QMouseEvent *event) - - This signal is emitted when an item is double clicked. - - \a event is the mouse event that caused the click and \a item is the item that received the - click. - - \see itemClick -*/ - -/*! \fn void QCustomPlot::axisClick(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event) - - This signal is emitted when an axis is clicked. - - \a event is the mouse event that caused the click, \a axis is the axis that received the click and - \a part indicates the part of the axis that was clicked. - - \see axisDoubleClick -*/ - -/*! \fn void QCustomPlot::axisDoubleClick(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event) - - This signal is emitted when an axis is double clicked. - - \a event is the mouse event that caused the click, \a axis is the axis that received the click and - \a part indicates the part of the axis that was clicked. - - \see axisClick -*/ - -/*! \fn void QCustomPlot::legendClick(QCPLegend *legend, QCPAbstractLegendItem *item, QMouseEvent *event) - - This signal is emitted when a legend (item) is clicked. - - \a event is the mouse event that caused the click, \a legend is the legend that received the - click and \a item is the legend item that received the click. If only the legend and no item is - clicked, \a item is 0 (e.g. a click inside the legend padding, which is not part of any item). - - \see legendDoubleClick -*/ - -/*! \fn void QCustomPlot::legendDoubleClick(QCPLegend *legend, QCPAbstractLegendItem *item, QMouseEvent *event) - - This signal is emitted when a legend (item) is double clicked. - - \a event is the mouse event that caused the click, \a legend is the legend that received the - click and \a item is the legend item that received the click. If only the legend and no item is - clicked, \a item is 0 (e.g. a click inside the legend padding, which is not part of any item). - - \see legendClick -*/ - -/*! \fn void QCustomPlot:: titleClick(QMouseEvent *event) - - This signal is emitted when the plot title is clicked. - - \a event is the mouse event that caused the click. - - \see titleDoubleClick -*/ - -/*! \fn void QCustomPlot::titleDoubleClick(QMouseEvent *event) - - This signal is emitted when the plot title is double clicked. - - \a event is the mouse event that caused the click. - - \see titleClick -*/ - -/*! \fn void QCustomPlot::selectionChangedByUser() - - This signal is emitted after the user has changed the selection in the QCustomPlot, e.g. by - clicking. It is not emitted, when the selection state of an object has changed programmatically, - e.g. by a direct call to setSelected() on a plottable or by calling \ref deselectAll. - - See the documentation of \ref setInteractions for how to find out which objects are currently - selected. - - \see setInteractions, QCPAbstractPlottable::selectionChanged, QCPAxis::selectionChanged -*/ - -/*! \fn void QCustomPlot::beforeReplot() - - This signal is emitted immediately before a replot takes place (caused by a call to the slot \ref - replot). - - It is safe to mutually connect the replot slot with this signal on two QCustomPlots to make them - replot synchronously (i.e. it won't cause an infinite recursion). - - \see replot, afterReplot -*/ - -/*! \fn void QCustomPlot::afterReplot() - - This signal is emitted immediately after a replot has taken place (caused by a call to the slot \ref - replot). - - It is safe to mutually connect the replot slot with this signal on two QCustomPlots to make them - replot synchronously (i.e. it won't cause an infinite recursion). - - \see replot, beforeReplot -*/ - -/* end of documentation of signals */ - -/*! - Constructs a QCustomPlot and sets reasonable default values. - Four axes are created at the bottom, left, top and right sides (xAxis, yAxis, xAxis2, yAxis2), - however, only the bottom and left axes are set to be visible. - The legend is also set to be invisible initially. -*/ -QCustomPlot::QCustomPlot(QWidget *parent) : - QWidget(parent), - mDragging(false), - mReplotting(false), - mPlottingHints(QCP::phNone) -{ - setAttribute(Qt::WA_NoMousePropagation); - setAttribute(Qt::WA_OpaquePaintEvent); - setMouseTracking(true); - QLocale currentLocale = locale(); - currentLocale.setNumberOptions(QLocale::OmitGroupSeparator); - setLocale(currentLocale); - - // create very first layers: - QCPLayer *gridLayer = new QCPLayer(this, "grid"); - QCPLayer *mainLayer = new QCPLayer(this, "main"); - QCPLayer *axesLayer = new QCPLayer(this, "axes"); - mLayers.append(gridLayer); - mLayers.append(mainLayer); - mLayers.append(axesLayer); - setCurrentLayer(mainLayer); - - mPaintBuffer = QPixmap(size()); - legend = new QCPLegend(this); - legend->setVisible(false); - legend->setLayer(axesLayer); - xAxis = new QCPAxis(this, QCPAxis::atBottom); - yAxis = new QCPAxis(this, QCPAxis::atLeft); - xAxis2 = new QCPAxis(this, QCPAxis::atTop); - yAxis2 = new QCPAxis(this, QCPAxis::atRight); - xAxis2->setGrid(false); - yAxis2->setGrid(false); - xAxis2->setZeroLinePen(Qt::NoPen); - yAxis2->setZeroLinePen(Qt::NoPen); - xAxis2->setVisible(false); - yAxis2->setVisible(false); - xAxis->setLayer(axesLayer); - yAxis->setLayer(axesLayer); - xAxis2->setLayer(axesLayer); - yAxis2->setLayer(axesLayer); - xAxis->mGrid->setLayer(gridLayer); - yAxis->mGrid->setLayer(gridLayer); - xAxis2->mGrid->setLayer(gridLayer); - yAxis2->mGrid->setLayer(gridLayer); - mViewport = rect(); - - setNoAntialiasingOnDrag(false); - setAutoAddPlottableToLegend(true); - setAxisBackgroundScaled(true); - setAxisBackgroundScaledMode(Qt::KeepAspectRatioByExpanding); - setTitleFont(QFont(font().family(), 14, QFont::Bold)); - setTitleColor(Qt::black); - setSelectedTitleFont(QFont(font().family(), 14, QFont::Bold)); - setSelectedTitleColor(Qt::blue); - setTitleSelected(false); - setTitle(""); - setColor(Qt::white); - -#ifdef Q_WS_WIN - setPlottingHint(QCP::phForceRepaint); -#endif - setAntialiasedElements(QCP::aeNone); - setNotAntialiasedElements(QCP::aeNone); - setInteractions(iRangeDrag|iRangeZoom); - setMultiSelectModifier(Qt::ControlModifier); - setRangeDragAxes(xAxis, yAxis); - setRangeZoomAxes(xAxis, yAxis); - setRangeDrag(0); - setRangeZoom(0); - setRangeZoomFactor(0.85); - setSelectionTolerance(8); - - setMargin(0, 0, 0, 0); // also initializes the mAxisRect - setAutoMargin(true); - replot(); -} - -QCustomPlot::~QCustomPlot() -{ - clearPlottables(); - clearItems(); - delete legend; - delete xAxis; - delete yAxis; - delete xAxis2; - delete yAxis2; - qDeleteAll(mLayers); - mLayers.clear(); -} - -/*! - Returns the range drag axis of the \a orientation provided - \see setRangeDragAxes -*/ -QCPAxis *QCustomPlot::rangeDragAxis(Qt::Orientation orientation) -{ - return (orientation == Qt::Horizontal ? mRangeDragHorzAxis : mRangeDragVertAxis); -} - -/*! - Returns the range zoom axis of the \a orientation provided - \see setRangeZoomAxes -*/ -QCPAxis *QCustomPlot::rangeZoomAxis(Qt::Orientation orientation) -{ - return (orientation == Qt::Horizontal ? mRangeZoomHorzAxis : mRangeZoomVertAxis); -} - -/*! - Returns the range zoom factor of the \a orientation provided - \see setRangeZoomFactor -*/ -double QCustomPlot::rangeZoomFactor(Qt::Orientation orientation) -{ - return (orientation == Qt::Horizontal ? mRangeZoomFactorHorz : mRangeZoomFactorVert); -} - -/*! - Sets the plot title which will be drawn centered at the top of the widget. - The title position is not dependant on the actual position of the axes. However, if - \ref setAutoMargin is set to true, the top margin will be adjusted appropriately, - so the top axis labels/tick labels will not overlap with the title. - - \see setTitleFont, setTitleColor -*/ -void QCustomPlot::setTitle(const QString &title) -{ - mTitle = title; -} - -/*! - Sets the font of the plot title - \see setTitleColor, setTitle -*/ -void QCustomPlot::setTitleFont(const QFont &font) -{ - mTitleFont = font; -} - -/*! - Sets the text color of the plot title - \see setTitleFont, setTitle -*/ -void QCustomPlot::setTitleColor(const QColor &color) -{ - mTitleColor = color; -} - -/*! - An alternative way to set the margins, by directly setting the wanted axis rect. The rect - will be translated into appropriate margin values. - - \warning Setting the axis rect with this function does not guarantee that the axis rect will stay - like this indefinitely. In QCustomPlot, margins are the fixed values (if \ref setAutoMargin is - false). Hence the axis rect is automatically changed when the widget size changes, but the - margins (distances between axis rect sides and widget/viewport rect sides) stay the same. - - \see setMargin -*/ -void QCustomPlot::setAxisRect(const QRect &arect) -{ - mMarginLeft = arect.left()-mViewport.left(); - mMarginRight = mViewport.right()-arect.right(); - mMarginTop = arect.top()-mViewport.top(); - mMarginBottom = mViewport.bottom()-arect.bottom(); - updateAxisRect(); -} - -/*! - Sets the left margin manually. Will only have effect, if \ref setAutoMargin is set to false. - see \ref setMargin for an explanation of what margins mean in QCustomPlot. -*/ -void QCustomPlot::setMarginLeft(int margin) -{ - mMarginLeft = margin; - updateAxisRect(); -} - -/*! - Sets the right margin manually. Will only have effect, if \ref setAutoMargin is set to false. - see \ref setMargin for an explanation of what margins mean in QCustomPlot. -*/ -void QCustomPlot::setMarginRight(int margin) -{ - mMarginRight = margin; - updateAxisRect(); -} - -/*! - Sets the top margin manually. Will only have effect, if \ref setAutoMargin is set to false. - see \ref setMargin for an explanation of what margins mean in QCustomPlot. -*/ -void QCustomPlot::setMarginTop(int margin) -{ - mMarginTop = margin; - updateAxisRect(); -} - -/*! - Sets the bottom margin manually. Will only have effect, if \ref setAutoMargin is set to false. - see \ref setMargin for an explanation of what margins mean in QCustomPlot. -*/ -void QCustomPlot::setMarginBottom(int margin) -{ - mMarginBottom = margin; - updateAxisRect(); -} - -/*! - Sets the margins manually. Will only have effect, if \ref setAutoMargin is set to false. - The margins are the distances in pixels between the axes box and the viewport box. - The viewport box normally is the entire QCustomPlot widget or the entire image, if - using one of the export functions. Positive margin values always mean the axes box - is shrinked, going inward from the sides of the viewport box. -*/ -void QCustomPlot::setMargin(int left, int right, int top, int bottom) -{ - mMarginLeft = left; - mMarginRight = right; - mMarginTop = top; - mMarginBottom = bottom; - updateAxisRect(); -} - -/*! - Sets whether the margins are calculated automatically depeding on the sizes - of the tick labels, axis labels, paddings etc. - If disabled, the margins must be set manually with the \a setMargin functions. - \see setMargin, QCPAxis::setLabelPadding, QCPAxis::setTickLabelPadding -*/ -void QCustomPlot::setAutoMargin(bool enabled) -{ - mAutoMargin = enabled; -} - -/*! - Sets the background color of the QCustomPlot widget. -*/ -void QCustomPlot::setColor(const QColor &color) -{ - mColor = color; -} - -/*! - Sets which axis orientation may be range dragged by the user with mouse interaction. - What orientation corresponds to which specific axis can be set with - \ref setRangeDragAxes(QCPAxis *horizontal, QCPAxis *vertical). By - default, the horizontal axis is the bottom axis (xAxis) and the vertical axis - is the left axis (yAxis). - - To disable range dragging entirely, pass 0 as \a orientations or remove \ref iRangeDrag from \ref - setInteractions. To enable range dragging for both directions, pass Qt::Horizontal | - Qt::Vertical as \a orientations. - - In addition to setting \a orientations to a non-zero value, make sure \ref setInteractions - contains \ref iRangeDrag to enable the range dragging interaction. - - \see setRangeZoom, setRangeDragAxes, setNoAntialiasingOnDrag -*/ -void QCustomPlot::setRangeDrag(Qt::Orientations orientations) -{ - mRangeDrag = orientations; -} - -/*! - Sets which axis orientation may be zoomed by the user with the mouse wheel. What orientation - corresponds to which specific axis can be set with \ref setRangeZoomAxes(QCPAxis *horizontal, - QCPAxis *vertical). By default, the horizontal axis is the bottom axis (xAxis) and the vertical - axis is the left axis (yAxis). - - To disable range zooming entirely, pass 0 as \a orientations or remove \ref iRangeZoom from \ref - setInteractions. To enable range zooming for both directions, pass Qt::Horizontal | - Qt::Vertical as \a orientations. - - In addition to setting \a orientations to a non-zero value, make sure \ref setInteractions - contains \ref iRangeZoom to enable the range zooming interaction. - - \see setRangeZoomFactor, setRangeZoomAxes, setRangeDrag -*/ -void QCustomPlot::setRangeZoom(Qt::Orientations orientations) -{ - mRangeZoom = orientations; -} - -/*! - Sets the axes whose range will be dragged when \ref setRangeDrag enables mouse range dragging - on the QCustomPlot widget. - - \see setRangeZoomAxes -*/ -void QCustomPlot::setRangeDragAxes(QCPAxis *horizontal, QCPAxis *vertical) -{ - if (horizontal) - mRangeDragHorzAxis = horizontal; - if (vertical) - mRangeDragVertAxis = vertical; -} - -/*! - Sets the axes whose range will be zoomed when \ref setRangeZoom enables mouse wheel zooming on the - QCustomPlot widget. The two axes can be zoomed with different strengths, when different factors - are passed to \ref setRangeZoomFactor(double horizontalFactor, double verticalFactor). - - \see setRangeDragAxes -*/ -void QCustomPlot::setRangeZoomAxes(QCPAxis *horizontal, QCPAxis *vertical) -{ - if (horizontal) - mRangeZoomHorzAxis = horizontal; - if (vertical) - mRangeZoomVertAxis = vertical; -} - -/*! - Sets how strong one rotation step of the mouse wheel zooms, when range zoom was activated with - \ref setRangeZoom. The two parameters \a horizontalFactor and \a verticalFactor provide a way to - let the horizontal axis zoom at different rates than the vertical axis. Which axis is horizontal - and which is vertical, can be set with \ref setRangeZoomAxes. - - When the zoom factor is greater than one, scrolling the mouse wheel backwards (towards the user) - will zoom in (make the currently visible range smaller). For zoom factors smaller than one, the - same scrolling direction will zoom out. -*/ -void QCustomPlot::setRangeZoomFactor(double horizontalFactor, double verticalFactor) -{ - mRangeZoomFactorHorz = horizontalFactor; - mRangeZoomFactorVert = verticalFactor; -} - -/*! \overload - - Sets both the horizontal and vertical zoom \a factor. -*/ -void QCustomPlot::setRangeZoomFactor(double factor) -{ - mRangeZoomFactorHorz = factor; - mRangeZoomFactorVert = factor; -} - -/*! - Sets which elements are forcibly drawn antialiased as an or combination of QCP::AntialiasedElement. - - This overrides the antialiasing settings for whole element groups, normally controlled with the - \a setAntialiasing function on the individual elements. If an element is neither specified in - \ref setAntialiasedElements nor in \ref setNotAntialiasedElements, the antialiasing setting on - each individual element instance is used. - - For example, if \a antialiasedElements contains \ref QCP::aePlottables, all plottables will be - drawn antialiased, no matter what the specific QCPAbstractPlottable::setAntialiased value was set - to. - - \see setNotAntialiasedElements -*/ -void QCustomPlot::setAntialiasedElements(const QCP::AntialiasedElements &antialiasedElements) -{ - mAntialiasedElements = antialiasedElements; - - // make sure elements aren't in mNotAntialiasedElements and mAntialiasedElements simultaneously: - if ((mNotAntialiasedElements & mAntialiasedElements) != 0) - mNotAntialiasedElements |= ~mAntialiasedElements; -} - -/*! - Sets whether the specified \a antialiasedElement is forcibly drawn antialiased. - - This overrides the antialiasing settings for whole element groups, normally controlled with the - \a setAntialiasing function on the individual elements. If an element is neither specified in - \ref setAntialiasedElements nor in \ref setNotAntialiasedElements, the antialiasing setting on - each individual element instance is used. - - For example, if \a enabled is true and \a antialiasedElement is \ref QCP::aePlottables, all - plottables will be drawn antialiased, no matter what the specific - QCPAbstractPlottable::setAntialiased value was set to. - - \see setNotAntialiasedElement -*/ -void QCustomPlot::setAntialiasedElement(QCP::AntialiasedElement antialiasedElement, bool enabled) -{ - if (!enabled && mAntialiasedElements.testFlag(antialiasedElement)) - mAntialiasedElements &= ~antialiasedElement; - else if (enabled && !mAntialiasedElements.testFlag(antialiasedElement)) - mAntialiasedElements |= antialiasedElement; - - // make sure elements aren't in mNotAntialiasedElements and mAntialiasedElements simultaneously: - if ((mNotAntialiasedElements & mAntialiasedElements) != 0) - mNotAntialiasedElements |= ~mAntialiasedElements; -} - -/*! - Sets which elements are forcibly drawn not antialiased as an or combination of - QCP::AntialiasedElement. - - This overrides the antialiasing settings for whole element groups, normally controlled with the - \a setAntialiasing function on the individual elements. If an element is neither specified in - \ref setAntialiasedElements nor in \ref setNotAntialiasedElements, the antialiasing setting on - each individual element instance is used. - - For example, if \a notAntialiasedElements contains \ref QCP::aePlottables, no plottables will be - drawn antialiased, no matter what the specific QCPAbstractPlottable::setAntialiased value was set - to. - - if an element in \a notAntialiasedElements is already set in \ref setAntialiasedElements, it is - removed from there. - - \see setAntialiasedElements -*/ -void QCustomPlot::setNotAntialiasedElements(const QCP::AntialiasedElements ¬AntialiasedElements) -{ - mNotAntialiasedElements = notAntialiasedElements; - - // make sure elements aren't in mNotAntialiasedElements and mAntialiasedElements simultaneously: - if ((mNotAntialiasedElements & mAntialiasedElements) != 0) - mAntialiasedElements |= ~mNotAntialiasedElements; -} - -/*! - Sets whether the specified \a notAntialiasedElement is forcibly drawn not antialiased. - - This overrides the antialiasing settings for whole element groups, normally controlled with the - \a setAntialiasing function on the individual elements. If an element is neither specified in - \ref setAntialiasedElements nor in \ref setNotAntialiasedElements, the antialiasing setting on - each individual element instance is used. - - For example, if \a enabled is true and \a notAntialiasedElement is \ref QCP::aePlottables, no - plottables will be drawn antialiased, no matter what the specific - QCPAbstractPlottable::setAntialiased value was set to. - - if \a enabled is true and \a notAntialiasedElement is already set with \ref - setAntialiasedElement, it is removed from there. - - \see setAntialiasedElement -*/ -void QCustomPlot::setNotAntialiasedElement(QCP::AntialiasedElement notAntialiasedElement, bool enabled) -{ - if (!enabled && mNotAntialiasedElements.testFlag(notAntialiasedElement)) - mNotAntialiasedElements &= ~notAntialiasedElement; - else if (enabled && !mNotAntialiasedElements.testFlag(notAntialiasedElement)) - mNotAntialiasedElements |= notAntialiasedElement; - - // make sure elements aren't in mNotAntialiasedElements and mAntialiasedElements simultaneously: - if ((mNotAntialiasedElements & mAntialiasedElements) != 0) - mAntialiasedElements |= ~mNotAntialiasedElements; -} - -/*! - If set to true, adding a plottable (e.g. a graph) to the QCustomPlot automatically also adds the - newly created plottable to the legend. - - \see addPlottable, addGraph, QCPLegend::addItem -*/ -void QCustomPlot::setAutoAddPlottableToLegend(bool on) -{ - mAutoAddPlottableToLegend = on; -} - -/*! - Sets \a pm as the axis background pixmap. The axis background pixmap will be drawn inside the current - axis rect, before anything else (e.g. the axes themselves, grids, graphs, etc.) is drawn. - If the provided pixmap doesn't have the same size as the axis rect, scaling can be enabled with \ref setAxisBackgroundScaled - and the scaling mode (i.e. whether and how the aspect ratio is preserved) can be set with \ref setAxisBackgroundScaledMode. - To set all these options in one call, consider using the overloaded version of this function. - \see setAxisBackgroundScaled, setAxisBackgroundScaledMode -*/ -void QCustomPlot::setAxisBackground(const QPixmap &pm) -{ - mAxisBackground = pm; - mScaledAxisBackground = QPixmap(); -} - -/*! - \overload - Allows setting the background pixmap, whether it shall be scaled and how it shall be scaled in one call. - \see setAxisBackground(const QPixmap &pm), setAxisBackgroundScaled, setAxisBackgroundScaledMode -*/ -void QCustomPlot::setAxisBackground(const QPixmap &pm, bool scaled, Qt::AspectRatioMode mode) -{ - mAxisBackground = pm; - mScaledAxisBackground = QPixmap(); - mAxisBackgroundScaled = scaled; - mAxisBackgroundScaledMode = mode; -} - -/*! - Sets whether the axis background pixmap shall be scaled to fit the current axis rect or not. If - \a scaled is set to true, you may control whether and how the aspect ratio of the original pixmap is - preserved with \ref setAxisBackgroundScaledMode. - - Note that the scaled version of the original pixmap is buffered, so there is no performance penalty - on replots, when enabling the scaling. (Except of course, the axis rect is continuously - changed, but that's not very likely.) - - \see setAxisBackground, setAxisBackgroundScaledMode -*/ -void QCustomPlot::setAxisBackgroundScaled(bool scaled) -{ - mAxisBackgroundScaled = scaled; -} - -/*! - If scaling of the axis background pixmap is enabled (\ref setAxisBackgroundScaled), use this function to - define whether and how the aspect ratio of the original pixmap passed to \ref setAxisBackground is preserved. - \see setAxisBackground, setAxisBackgroundScaled -*/ -void QCustomPlot::setAxisBackgroundScaledMode(Qt::AspectRatioMode mode) -{ - mAxisBackgroundScaledMode = mode; -} - -/*! - Sets the possible interactions of this QCustomPlot as an or-combination of \ref Interaction - enums. There are the following types of interactions: - - Axis range manipulation is controlled via \ref iRangeDrag and \ref iRangeZoom. When the - respective interaction is enabled, the user may drag axes ranges and zoom with the mouse wheel. - For details how to control which axes the user may drag/zoom and in what orientations, see \ref - setRangeDrag, \ref setRangeZoom, \ref setRangeDragAxes, \ref setRangeZoomAxes. - - Plottable selection is controlled by \ref iSelectPlottables. If \ref iSelectPlottables is - set, the user may select plottables (e.g. graphs, curves, bars,...) by clicking on them or in - their vicinity, see \ref setSelectionTolerance. Whether the user can actually select a plottable - can further be restricted with the \ref QCPAbstractPlottable::setSelectable function on the - specific plottable. To find out whether a specific plottable is selected, call - QCPAbstractPlottable::selected(). To retrieve a list of all currently selected plottables, call - \ref selectedPlottables. If you're only interested in QCPGraphs, you may use the convenience - function \ref selectedGraphs. - - Item selection is controlled by \ref iSelectItems. If \ref iSelectItems is set, the user - may select items (e.g. QCPItemLine, QCPItemText,...) by clicking on them or in their vicinity. To - find out whether a specific item is selected, call QCPAbstractItem::selected(). To retrieve a - list of all currently selected items, call \ref selectedItems. - - Axis selection is controlled with \ref iSelectAxes. If \ref iSelectAxes is set, the user - may select parts of the axes by clicking on them. What parts exactly (e.g. Axis base line, tick - labels, axis label) are selectable can be controlled via \ref QCPAxis::setSelectable for each - axis. To retrieve a list of all axes that currently contain selected parts, call \ref - selectedAxes. Which parts of an axis are selected, can be retrieved with QCPAxis::selected(). - - Legend selection is controlled with \ref iSelectLegend. If this is set, the user may - select the legend itself or individual items by clicking on them. What parts exactly are - selectable can be controlled via \ref QCPLegend::setSelectable. To find out whether the legend or - any child items are selected, check the value of QCPLegend::selected. To find out which child - items are selected, call \ref QCPLegend::selectedItems. - - Plot title selection is controlled with \ref iSelectTitle. If set, the user may select the - plot title by clicking on it. To find out whether the title is currently selected, call - QCustomPlot::titleSelected(). - - If the selection state has changed by user interaction, the \ref selectionChangedByUser signal is - emitted. Each selectable object additionally emits an individual selectionChanged signal whenever - their selection state has changed, i.e. not only by user interaction. - - To allow multiple objects to be selected by holding the modifier set with \ref - setMultiSelectModifier, set the flag \ref iMultiSelect. - - \note In addition to the selection mechanism presented here, QCustomPlot always emits - corresponding signals, when an object is clicked or double clicked. see \ref plottableClick and - \ref plottableDoubleClick for example. - - \see setInteraction, setSelectionTolerance -*/ -void QCustomPlot::setInteractions(const Interactions &interactions) -{ - mInteractions = interactions; -} - -/*! - Sets the single \a interaction of this QCustomPlot to \a enabled. - - For details about the interaction system, see \ref setInteractions. - - \see setInteractions -*/ -void QCustomPlot::setInteraction(const QCustomPlot::Interaction &interaction, bool enabled) -{ - if (!enabled && mInteractions.testFlag(interaction)) - mInteractions &= ~interaction; - else if (enabled && !mInteractions.testFlag(interaction)) - mInteractions |= interaction; -} - -/*! - Sets the tolerance that is used when deciding whether a click on the QCustomPlot surface selects - an object (e.g. a plottable) or not. - - If for example the user clicks in the vicinity of the line of a QCPGraph, it's only regarded as a - potential selection when the minimum distance between the click position and the graph line is - smaller than \a pixels. Objects that are defined by an area (e.g. QCPBars) only react to clicks - directly inside the area and ignore this selection tolerance. In other words it only has meaning - for parts of objects that are too thin to exactly hit with a click and thus need such a - tolerance. - - \see setInteractions, QCPAbstractPlottable::selectTest -*/ -void QCustomPlot::setSelectionTolerance(int pixels) -{ - mSelectionTolerance = pixels; -} - -/*! - This \a font is used to draw the title, when it is selected. - - \see setTitleSelected, setTitleFont -*/ -void QCustomPlot::setSelectedTitleFont(const QFont &font) -{ - mSelectedTitleFont = font; -} - -/*! - This \a color is used to draw the title, when it is selected. - - \see setTitleSelected, setTitleColor -*/ -void QCustomPlot::setSelectedTitleColor(const QColor &color) -{ - mSelectedTitleColor = color; -} - -/*! - Sets whether the plot title is selected. - - \see setInteractions, setSelectedTitleFont, setSelectedTitleColor, setTitle -*/ -void QCustomPlot::setTitleSelected(bool selected) -{ - mTitleSelected = selected; -} - -/*! - Sets whether antialiasing is disabled for all elements while the user is dragging axes ranges. If - many objects, especially plottables, are normally drawn antialiased, this greatly improves - performance during dragging. Thus it creates a more responsive user experience. As soon as the - user stops dragging, the last replot is done with normal antialiasing, to restore high image - quality. - - \see setAntialiasedElements, setNotAntialiasedElements -*/ -void QCustomPlot::setNoAntialiasingOnDrag(bool enabled) -{ - mNoAntialiasingOnDrag = enabled; -} - -/*! - Sets the plotting hints for this QCustomPlot instance. - \see setPlottingHint -*/ -void QCustomPlot::setPlottingHints(const QCP::PlottingHints &hints) -{ - mPlottingHints = hints; -} - -/*! - Sets the specified plotting \a hint to \a enabled. - \see setPlottingHints -*/ -void QCustomPlot::setPlottingHint(QCP::PlottingHint hint, bool enabled) -{ - QCP::PlottingHints newHints = mPlottingHints; - if (!enabled) - newHints &= ~hint; - else - newHints |= hint; - - if (newHints != mPlottingHints) - setPlottingHints(newHints); -} - -/*! - Sets the keyboard modifier that will be recognized as multi-select-modifier. - - If \ref iMultiSelect is specified in \ref setInteractions, the user may select multiple objects - by clicking on them one after the other while holding down \a modifier. - - By default the multi-select-modifier is set to Qt::ControlModifier. - - \see setInteractions -*/ -void QCustomPlot::setMultiSelectModifier(Qt::KeyboardModifier modifier) -{ - mMultiSelectModifier = modifier; -} - -/*! - Returns the plottable with \a index. If the index is invalid, returns 0. - - There is an overloaded version of this function with no parameter which returns the last added - plottable, see QCustomPlot::plottable() - - \see plottableCount, addPlottable -*/ -QCPAbstractPlottable *QCustomPlot::plottable(int index) -{ - if (index >= 0 && index < mPlottables.size()) - { - return mPlottables.at(index); - } else - { - qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; - return 0; - } -} - -/*! \overload - - Returns the last plottable, that was added with \ref addPlottable. If there are no plottables in the plot, - returns 0. - - \see plottableCount, addPlottable -*/ -QCPAbstractPlottable *QCustomPlot::plottable() -{ - if (!mPlottables.isEmpty()) - { - return mPlottables.last(); - } else - return 0; -} - -/*! - Adds the specified plottable to the plot and, if \ref setAutoAddPlottableToLegend is enabled, to the legend. - QCustomPlot takes ownership of the plottable. - - Returns true on success, i.e. when \a plottable wasn't already added to the plot and - the parent plot of \a plottable is this QCustomPlot (the latter is controlled by what - axes the plottable was passed in the constructor). - - \see plottable, plottableCount, removePlottable, clearPlottables -*/ -bool QCustomPlot::addPlottable(QCPAbstractPlottable *plottable) -{ - if (mPlottables.contains(plottable)) - { - qDebug() << Q_FUNC_INFO << "plottable already added to this QCustomPlot:" << reinterpret_cast(plottable); - return false; - } - if (plottable->parentPlot() != this) - { - qDebug() << Q_FUNC_INFO << "plottable not created with this QCustomPlot as parent:" << reinterpret_cast(plottable); - return false; - } - - mPlottables.append(plottable); - // possibly add plottable to legend: - if (mAutoAddPlottableToLegend) - plottable->addToLegend(); - // special handling for QCPGraphs to maintain the simple graph interface: - if (QCPGraph *graph = qobject_cast(plottable)) - mGraphs.append(graph); - if (!plottable->layer()) // usually the layer is already set in the constructor of the plottable (via QCPLayerable constructor) - plottable->setLayer(currentLayer()); - return true; -} - -/*! - Removes the specified plottable from the plot and, if necessary, from the legend. - - Returns true on success. - - \see addPlottable, clearPlottables -*/ -bool QCustomPlot::removePlottable(QCPAbstractPlottable *plottable) -{ - if (!mPlottables.contains(plottable)) - { - qDebug() << Q_FUNC_INFO << "plottable not in list:" << reinterpret_cast(plottable); - return false; - } - - // remove plottable from legend: - plottable->removeFromLegend(); - // special handling for QCPGraphs to maintain the simple graph interface: - if (QCPGraph *graph = qobject_cast(plottable)) - mGraphs.removeOne(graph); - // remove plottable: - delete plottable; - mPlottables.removeOne(plottable); - return true; -} - -/*! \overload - - Removes the plottable by its \a index. -*/ -bool QCustomPlot::removePlottable(int index) -{ - if (index >= 0 && index < mPlottables.size()) - return removePlottable(mPlottables[index]); - else - { - qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; - return false; - } -} - -/*! - Removes all plottables from the plot (and the legend, if necessary). - - Returns the number of plottables removed. - - \see removePlottable -*/ -int QCustomPlot::clearPlottables() -{ - int c = mPlottables.size(); - for (int i=c-1; i >= 0; --i) - removePlottable(mPlottables[i]); - return c; -} - -/*! - Returns the number of currently existing plottables in the plot - - \see plottable, addPlottable -*/ -int QCustomPlot::plottableCount() const -{ - return mPlottables.size(); -} - -/*! - Returns a list of the selected plottables. If no plottables are currently selected, the list is empty. - - There is a convenience function if you're only interested in selected graphs, see \ref selectedGraphs. - - \see setInteractions, QCPAbstractPlottable::setSelectable, QCPAbstractPlottable::setSelected, selectedGraphs -*/ -QList QCustomPlot::selectedPlottables() const -{ - QList result; - for (int i=0; iselected()) - result.append(mPlottables.at(i)); - } - return result; -} - -/*! - Returns the plottable at the pixel position \a pos. Plottables that only consist of single lines - (e.g. graphs) have a tolerance band around them, see \ref setSelectionTolerance. - If multiple plottables come into consideration, the one closest to \a pos is returned. - - If \a onlySelectable is true, only plottables that are selectable - (QCPAbstractPlottable::setSelectable) are considered. - - If there is no plottable at \a pos, the return value is 0. -*/ -QCPAbstractPlottable *QCustomPlot::plottableAt(const QPointF &pos, bool onlySelectable) const -{ - QCPAbstractPlottable *resultPlottable = 0; - double resultDistance = mSelectionTolerance; // only regard clicks with distances smaller than mSelectionTolerance as selections, so initialize with that value - - for (int i=0; iselectable()) - continue; - if ((currentPlottable->keyAxis()->axisRect() | currentPlottable->valueAxis()->axisRect()).contains(pos.toPoint())) // only consider clicks inside the rect that is spanned by the plottable's key/value axes - { - double currentDistance = currentPlottable->selectTest(pos); - if (currentDistance >= 0 && currentDistance < resultDistance) - { - resultPlottable = currentPlottable; - resultDistance = currentDistance; - } - } - } - - return resultPlottable; -} - -/*! - Returns whether this QCustomPlot instance contains the \a plottable. - - \see addPlottable -*/ -bool QCustomPlot::hasPlottable(QCPAbstractPlottable *plottable) const -{ - return mPlottables.contains(plottable); -} - -/*! - Returns the graph with \a index. If the index is invalid, returns 0. - - There is an overloaded version of this function with no parameter which returns the last created - graph, see QCustomPlot::graph() - - \see graphCount, addGraph -*/ -QCPGraph *QCustomPlot::graph(int index) const -{ - if (index >= 0 && index < mGraphs.size()) - { - return mGraphs.at(index); - } else - { - qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; - return 0; - } -} - -/*! \overload - - Returns the last graph, that was created with \ref addGraph. If there are no graphs in the plot, - returns 0. - - \see graphCount, addGraph -*/ -QCPGraph *QCustomPlot::graph() const -{ - if (!mGraphs.isEmpty()) - { - return mGraphs.last(); - } else - return 0; -} - -/*! - Creates a new graph inside the plot. If \a keyAxis and \a valueAxis are left unspecified (0), the - bottom (xAxis) is used as key and the left (yAxis) is used as value. If specified, \a keyAxis and - \a valueAxis must reside in this QCustomPlot. - - \a keyAxis will be used as key axis (typically "x") and \a valueAxis as value axis (typically - "y") for the graph. - - Returns a pointer to the newly created graph. - - \see graph, graphCount, removeGraph, clearGraphs -*/ -QCPGraph *QCustomPlot::addGraph(QCPAxis *keyAxis, QCPAxis *valueAxis) -{ - if (!keyAxis) keyAxis = xAxis; - if (!valueAxis) valueAxis = yAxis; - if (keyAxis->parentPlot() != this || valueAxis->parentPlot() != this) - { - qDebug() << Q_FUNC_INFO << "passed keyAxis or valueAxis doesn't have this QCustomPlot as parent"; - return 0; - } - - QCPGraph *newGraph = new QCPGraph(keyAxis, valueAxis); - if (addPlottable(newGraph)) - { - newGraph->setName("Graph "+QString::number(mGraphs.size())); - return newGraph; - } else - { - delete newGraph; - return 0; - } -} - -/*! - Removes the specified \a graph from the plot and, if necessary, from the legend. If - any other graphs in the plot have a channel fill set towards the removed graph, the channel fill - property of those graphs is reset to zero (no channel fill). - - Returns true on success. - - \see clearGraphs -*/ -bool QCustomPlot::removeGraph(QCPGraph *graph) -{ - return removePlottable(graph); -} - -/*! \overload - - Removes the graph by its \a index. -*/ -bool QCustomPlot::removeGraph(int index) -{ - if (index >= 0 && index < mGraphs.size()) - return removeGraph(mGraphs[index]); - else - return false; -} - -/*! - Removes all graphs from the plot (and the legend, if necessary). - Returns the number of graphs removed. - \see removeGraph -*/ -int QCustomPlot::clearGraphs() -{ - int c = mGraphs.size(); - for (int i=c-1; i >= 0; --i) - removeGraph(mGraphs[i]); - return c; -} - -/*! - Returns the number of currently existing graphs in the plot - - \see graph, addGraph -*/ -int QCustomPlot::graphCount() const -{ - return mGraphs.size(); -} - -/*! - Returns a list of the selected graphs. If no graphs are currently selected, the list is empty. - - \note Even if the returned list is empty, it might still be, that there are selected plottables - in the plot that are not of type QCPGraph (e.g. QCPCurve, QCPBars, etc.), see \ref - selectedPlottables. Of course, this only applies, if you actually add non-QCPGraph plottables. - - \see setInteractions, selectedPlottables, QCPAbstractPlottable::setSelectable, QCPAbstractPlottable::setSelected -*/ -QList QCustomPlot::selectedGraphs() const -{ - QList result; - for (int i=0; iselected()) - result.append(mGraphs.at(i)); - } - return result; -} - -/*! - Returns the item with \a index. If the index is invalid, returns 0. - - There is an overloaded version of this function with no parameter which returns the last added - item, see QCustomPlot::item() - - \see itemCount, addItem -*/ -QCPAbstractItem *QCustomPlot::item(int index) const -{ - if (index >= 0 && index < mItems.size()) - { - return mItems.at(index); - } else - { - qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; - return 0; - } -} - -/*! \overload - - Returns the last item, that was added with \ref addItem. If there are no items in the plot, - returns 0. - - \see itemCount, addItem -*/ -QCPAbstractItem *QCustomPlot::item() const -{ - if (!mItems.isEmpty()) - { - return mItems.last(); - } else - return 0; -} - -/*! - Adds the specified item to the plot. QCustomPlot takes ownership of the item. - - Returns true on success, i.e. when \a item wasn't already added to the plot and the parent plot - of \a item is this QCustomPlot. - - \see item, itemCount, removeItem, clearItems -*/ -bool QCustomPlot::addItem(QCPAbstractItem *item) -{ - if (!mItems.contains(item) && item->parentPlot() == this) - { - mItems.append(item); - return true; - } else - { - qDebug() << Q_FUNC_INFO << "item either already in list or not created with this QCustomPlot as parent:" << reinterpret_cast(item); - return false; - } -} - -/*! - Removes the specified item from the plot. - - Returns true on success. - - \see addItem, clearItems -*/ -bool QCustomPlot::removeItem(QCPAbstractItem *item) -{ - if (mItems.contains(item)) - { - delete item; - mItems.removeOne(item); - return true; - } else - { - qDebug() << Q_FUNC_INFO << "item not in list:" << reinterpret_cast(item); - return false; - } -} - -/*! \overload - - Removes the item by its \a index. -*/ -bool QCustomPlot::removeItem(int index) -{ - if (index >= 0 && index < mItems.size()) - return removeItem(mItems[index]); - else - { - qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; - return false; - } -} - -/*! - Removes all items from the plot. - - Returns the number of items removed. - - \see removeItem -*/ -int QCustomPlot::clearItems() -{ - int c = mItems.size(); - for (int i=c-1; i >= 0; --i) - removeItem(mItems[i]); - return c; -} - -/*! - Returns the number of currently existing items in the plot - - \see item, addItem -*/ -int QCustomPlot::itemCount() const -{ - return mItems.size(); -} - -/*! - Returns a list of the selected items. If no items are currently selected, the list is empty. - - \see setInteractions, QCPAbstractItem::setSelectable, QCPAbstractItem::setSelected -*/ -QList QCustomPlot::selectedItems() const -{ - QList result; - for (int i=0; iselected()) - result.append(mItems.at(i)); - } - return result; -} - -/*! - Returns the item at the pixel position \a pos. Items that only consist of single lines (e.g. \ref - QCPItemLine or \ref QCPItemCurve) have a tolerance band around them, see \ref - setSelectionTolerance. If multiple items come into consideration, the one closest to \a pos is - returned. - - If \a onlySelectable is true, only items that are selectable (QCPAbstractItem::setSelectable) are - considered. - - If there is no item at \a pos, the return value is 0. -*/ -QCPAbstractItem *QCustomPlot::itemAt(const QPointF &pos, bool onlySelectable) const -{ - QCPAbstractItem *resultItem = 0; - double resultDistance = mSelectionTolerance; // only regard clicks with distances smaller than mSelectionTolerance as selections, so initialize with that value - - for (int i=0; iselectable()) - continue; - if (!currentItem->clipToAxisRect() || currentItem->clipRect().contains(pos.toPoint())) // only consider clicks inside axis cliprect of the item if actually clipped to it - { - double currentDistance = currentItem->selectTest(pos); - if (currentDistance >= 0 && currentDistance < resultDistance) - { - resultItem = currentItem; - resultDistance = currentDistance; - } - } - } - - return resultItem; -} - -/*! - Returns the layer with the specified \a name. - - \see addLayer, moveLayer, removeLayer -*/ -QCPLayer *QCustomPlot::layer(const QString &name) const -{ - for (int i=0; iname() == name) - return mLayers.at(i); - } - return 0; -} - -/*! \overload - - Returns the layer by index. - - \see addLayer, moveLayer, removeLayer -*/ -QCPLayer *QCustomPlot::layer(int index) const -{ - if (index >= 0 && index < mLayers.size()) - { - return mLayers.at(index); - } else - { - qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; - return 0; - } -} - -/*! - Returns the layer that is set as current layer (see \ref setCurrentLayer). -*/ -QCPLayer *QCustomPlot::currentLayer() const -{ - return mCurrentLayer; -} - -/*! - Sets the layer with the specified \a name to be the current layer. All newly created/added - layerables (\ref QCPLayerable), e.g. plottables and items, are initially placed on the current - layer. - - Returns true on success, i.e. if there is a layer with the specified \a name in the QCustomPlot. - - \see addLayer, moveLayer, removeLayer -*/ -bool QCustomPlot::setCurrentLayer(const QString &name) -{ - if (QCPLayer *newCurrentLayer = layer(name)) - { - return setCurrentLayer(newCurrentLayer); - } else - { - qDebug() << Q_FUNC_INFO << "layer with name doesn't exist:" << name; - return false; - } -} - -/*! \overload - - Sets the provided \a layer to be the current layer. - - Returns true on success, i.e. when \a layer is a valid layer in the QCustomPlot. - - \see addLayer, moveLayer, removeLayer -*/ -bool QCustomPlot::setCurrentLayer(QCPLayer *layer) -{ - if (!mLayers.contains(layer)) - { - qDebug() << Q_FUNC_INFO << "layer not a layer of this QCustomPlot:" << reinterpret_cast(layer); - return false; - } - - mCurrentLayer = layer; - return true; -} - -/*! - Returns the number of currently existing layers in the plot - - \see layer, addLayer -*/ -int QCustomPlot::layerCount() const -{ - return mLayers.size(); -} - -/*! - Adds a new layer to this QCustomPlot instance. The new layer will have the name \a name, which must - be unique. It is positioned either below or above \a otherLayer, which can be controlled with \a insertMode. - - Returns true on success, i.e. if there is no other layer named \a name and \a otherLayer is a - valid layer inside this QCustomPlot. - - If \a otherLayer is 0, the highest layer in the QCustomPlot will be used. - - For an explanation of what layers are in QCustomPlot, see the documentation of \ref QCPLayer. - - \see layer, moveLayer, removeLayer -*/ -bool QCustomPlot::addLayer(const QString &name, QCPLayer *otherLayer, QCustomPlot::LayerInsertMode insertMode) -{ - if (!otherLayer) - otherLayer = mLayers.last(); - if (!mLayers.contains(otherLayer)) - { - qDebug() << Q_FUNC_INFO << "otherLayer not a layer of this QCustomPlot:" << reinterpret_cast(otherLayer); - return false; - } - if (layer(name)) - { - qDebug() << Q_FUNC_INFO << "A layer exists already with the name" << name; - return false; - } - - QCPLayer *newLayer = new QCPLayer(this, name); - mLayers.insert(otherLayer->index() + (insertMode==limAbove ? 1:0), newLayer); - return true; -} - -/*! - Removes the specified \a layer and returns true on success. - - All layerables (e.g. plottables and items) on the removed layer will be moved to the layer below - \a layer. If \a layer is the bottom layer, the layerables are moved to the layer above. In both - cases, the total rendering order of all layerables in the QCustomPlot is preserved. - - If \a layer is the current layer (\ref setCurrentLayer), the layer below (or above, if bottom - layer) becomes the new current layer. - - Note that it is not possible to remove the last layer. - - \see layer, addLayer, moveLayer -*/ -bool QCustomPlot::removeLayer(QCPLayer *layer) -{ - if (!mLayers.contains(layer)) - { - qDebug() << Q_FUNC_INFO << "layer not a layer of this QCustomPlot:" << reinterpret_cast(layer); - return false; - } - if (!mLayers.size() > 1) - { - qDebug() << Q_FUNC_INFO << "can't remove last layer"; - return false; - } - - // append all children of this layer to layer below (if this is lowest layer, prepend to layer above) - int removedIndex = layer->index(); - bool isFirstLayer = removedIndex==0; - QCPLayer *targetLayer = isFirstLayer ? mLayers.at(removedIndex+1) : mLayers.at(removedIndex-1); - QList children = layer->children(); - if (isFirstLayer) // prepend in reverse order (so order relative to each other stays the same) - { - for (int i=children.size()-1; i>=0; --i) - children.at(i)->moveToLayer(targetLayer, true); - } else // append normally - { - for (int i=0; imoveToLayer(targetLayer, false); - } - // if removed layer is current layer, change current layer to layer below/above: - if (layer == mCurrentLayer) - setCurrentLayer(targetLayer); - // remove layer: - delete layer; - mLayers.removeOne(layer); - return true; -} - -/*! - Moves the specified \a layer to the position relative to \a otherLayer. Whether \a layer is - placed above or below \a otherLayer can be controlled with \a insertMode. - - Returns true on success, i.e. when both \a layer and \a otherLayer are valid layers in the - QCustomPlot. - - \see layer, addLayer, moveLayer -*/ -bool QCustomPlot::moveLayer(QCPLayer *layer, QCPLayer *otherLayer, QCustomPlot::LayerInsertMode insertMode) -{ - if (!mLayers.contains(layer)) - { - qDebug() << Q_FUNC_INFO << "layer not a layer of this QCustomPlot:" << reinterpret_cast(layer); - return false; - } - if (!mLayers.contains(otherLayer)) - { - qDebug() << Q_FUNC_INFO << "otherLayer not a layer of this QCustomPlot:" << reinterpret_cast(otherLayer); - return false; - } - - mLayers.move(layer->index(), otherLayer->index() + (insertMode==limAbove ? 1:0)); - return true; -} - -/*! - Returns the axes that currently have selected parts, i.e. whose selection is not \ref QCPAxis::spNone. - - \see selectedPlottables, selectedLegends, setInteractions, QCPAxis::setSelected, QCPAxis::setSelectable -*/ -QList QCustomPlot::selectedAxes() const -{ - QList result = QList() << xAxis << yAxis << xAxis2 << yAxis2; - for (int i=result.size()-1; i>=0; --i) - { - if (result.at(i)->selected() == QCPAxis::spNone) - result.removeAt(i); - } - return result; -} - -/*! - Returns the legends (typically one or zero) that currently have selected parts, i.e. whose - selection is not \ref QCPLegend::spNone. - - \see selectedPlottables, selectedAxes, setInteractions, QCPLegend::setSelected, QCPLegend::setSelectable, QCPLegend::selectedItems -*/ -QList QCustomPlot::selectedLegends() const -{ - /* for now, we only have the one legend. Maybe later, there will be a mechanism to have more. */ - QList result; - if (legend->selected() != QCPLegend::spNone) - result.append(legend); - return result; -} - -/*! - Deselects everything in the QCustomPlot (plottables, items, axes, legend and title). - - Since calling this function is not a user interaction, this does not emit the \ref - selectionChangedByUser signal. The individual selectionChanged signals are emitted though, if the - objects were previously selected. - - \see setInteractions, selectedPlottables, selectedItems, selectedAxes, selectedLegends -*/ -void QCustomPlot::deselectAll() -{ - // deselect plottables: - QList selPlottables = selectedPlottables(); - for (int i=0; isetSelected(false); - - // deselect items: - QList selItems = selectedItems(); - for (int i=0; isetSelected(false); - - // deselect axes: - QList selAxes = selectedAxes(); - for (int i=0; isetSelected(QCPAxis::spNone); - - // deselect legend (and legend items): - legend->setSelected(QCPLegend::spNone); - - // deselect title: - setTitleSelected(false); -} - -/*! - Causes a complete replot (axes, labels, graphs, etc.) into the internal buffer. Finally, update() - is called, to redraw the buffer on the QCustomPlot widget surface. - - Before the replot happens, the signal \ref beforeReplot is emitted. After the replot, \ref afterReplot is - emitted. It is safe to mutually connect the replot slot with any of those two signals on two QCustomPlots - to make them replot synchronously (i.e. it won't cause an infinite recursion). -*/ -void QCustomPlot::replot() -{ - if (mReplotting) // incase signals loop back to replot slot - return; - mReplotting = true; - emit beforeReplot(); - mPaintBuffer.fill(mColor); - QCPPainter painter; - painter.begin(&mPaintBuffer); - if (painter.isActive()) - { - painter.setRenderHint(QPainter::HighQualityAntialiasing); - draw(&painter); - if (mPlottingHints.testFlag(QCP::phForceRepaint)) - repaint(); - else - update(); - painter.end(); - } else // might happen if QCustomPlot has width or height zero - qDebug() << Q_FUNC_INFO << "Couldn't activate painter on buffer"; - emit afterReplot(); - mReplotting = false; -} - -/*! - Convenience function to make the top and right axes visible and assign them the following - properties from their corresponding bottom/left axes: - - \li range (\ref QCPAxis::setRange) - \li range reversed (\ref QCPAxis::setRangeReversed) - \li scale type (\ref QCPAxis::setScaleType) - \li scale log base (\ref QCPAxis::setScaleLogBase) - \li ticks (\ref QCPAxis::setTicks) - \li auto (major) tick count (\ref QCPAxis::setAutoTickCount) - \li sub tick count (\ref QCPAxis::setSubTickCount) - \li auto sub ticks (\ref QCPAxis::setAutoSubTicks) - \li tick step (\ref QCPAxis::setTickStep) - \li auto tick step (\ref QCPAxis::setAutoTickStep) - - Tick labels (\ref QCPAxis::setTickLabels) however, is always set to false. - - This function does \a not connect the rangeChanged signals of the bottom and left axes to the \ref - QCPAxis::setRange slots of the top and right axes in order to synchronize the ranges permanently. -*/ -void QCustomPlot::setupFullAxesBox() -{ - xAxis2->setVisible(true); - yAxis2->setVisible(true); - - xAxis2->setTickLabels(false); - yAxis2->setTickLabels(false); - - xAxis2->setAutoSubTicks(xAxis->autoSubTicks()); - yAxis2->setAutoSubTicks(yAxis->autoSubTicks()); - - xAxis2->setAutoTickCount(xAxis->autoTickCount()); - yAxis2->setAutoTickCount(yAxis->autoTickCount()); - - xAxis2->setAutoTickStep(xAxis->autoTickStep()); - yAxis2->setAutoTickStep(yAxis->autoTickStep()); - - xAxis2->setScaleType(xAxis->scaleType()); - yAxis2->setScaleType(yAxis->scaleType()); - - xAxis2->setScaleLogBase(xAxis->scaleLogBase()); - yAxis2->setScaleLogBase(yAxis->scaleLogBase()); - - xAxis2->setTicks(xAxis->ticks()); - yAxis2->setTicks(yAxis->ticks()); - - xAxis2->setSubTickCount(xAxis->subTickCount()); - yAxis2->setSubTickCount(yAxis->subTickCount()); - - xAxis2->setTickStep(xAxis->tickStep()); - yAxis2->setTickStep(yAxis->tickStep()); - - xAxis2->setRange(xAxis->range()); - yAxis2->setRange(yAxis->range()); - - xAxis2->setRangeReversed(xAxis->rangeReversed()); - yAxis2->setRangeReversed(yAxis->rangeReversed()); -} - -/*! - Rescales the axes such that all plottables (e.g. graphs) in the plot are fully visible. - It does this by calling \ref QCPAbstractPlottable::rescaleAxes on all plottables. - - \see QCPAbstractPlottable::rescaleAxes -*/ -void QCustomPlot::rescaleAxes() -{ - if (mPlottables.isEmpty()) return; - - mPlottables.at(0)->rescaleAxes(false); // onlyEnlarge disabled on first plottable - for (int i=1; irescaleAxes(true); // onlyEnlarge enabled on all other plottables -} - -/*! - Saves a PDF with the vectorized plot to the file \a fileName. The axis ratio as well as the scale - of texts and lines will be derived from the specified \a width and \a height. This means, the - output will look like the normal on-screen output of a QCustomPlot widget with the corresponding - pixel width and height. If either \a width or \a height is zero, the exported image will have - the same dimensions as the QCustomPlot widget currently has. - - \a noCosmeticPen disables the use of cosmetic pens when drawing to the PDF file. Cosmetic pens - are pens with numerical width 0, which are always drawn as a one pixel wide line, no matter what - zoom factor is set in the PDF-Viewer. For more information about cosmetic pens, see QPainter and - QPen documentation. - - The objects of the plot will appear in the current selection state. So when you don't want e.g. - selected axes to be painted in their selected look, deselect everything with \ref deselectAll - before calling this function. - - Returns true on success. - - \warning - \li If you plan on editing the exported PDF file with a vector graphics editor like - Inkscape, it is advised to set \a noCosmeticPen to true to avoid losing those cosmetic lines - (which might be quite many, because cosmetic pens are the default for e.g. axes and tick marks). - \li If calling this function inside the constructor of the parent of the QCustomPlot widget - (i.e. the MainWindow constructor, if QCustomPlot is inside the MainWindow), always provide - explicit non-zero widths and heights. If you leave \a width or \a height as 0 (default), this - function uses the current width and height of the QCustomPlot widget. However, in Qt, these - aren't defined yet inside the constructor, so you would get an image that has strange - widths/heights. - - \see savePng, saveBmp, saveJpg, saveRastered -*/ -bool QCustomPlot::savePdf(const QString &fileName, bool noCosmeticPen, int width, int height) -{ - bool success = false; - int newWidth, newHeight; - if (width == 0 || height == 0) - { - newWidth = this->width(); - newHeight = this->height(); - } else - { - newWidth = width; - newHeight = height; - } - - QPrinter printer(QPrinter::ScreenResolution); - printer.setOutputFileName(fileName); - printer.setFullPage(true); - QRect oldViewport = mViewport; - mViewport = QRect(0, 0, newWidth, newHeight); - updateAxisRect(); - printer.setPaperSize(mViewport.size(), QPrinter::DevicePixel); - QCPPainter printpainter; - if (printpainter.begin(&printer)) - { - printpainter.setPdfExportMode(true); - printpainter.setWindow(mViewport); - printpainter.setRenderHint(QPainter::NonCosmeticDefaultPen, noCosmeticPen); - if (mColor != Qt::white && mColor != Qt::transparent && mColor.alpha() > 0) // draw pdf background color if not white/transparent - printpainter.fillRect(mViewport, mColor); - draw(&printpainter); - printpainter.end(); - success = true; - } - mViewport = oldViewport; - updateAxisRect(); - return success; -} - -/*! - Saves a PNG image file to \a fileName on disc. The output plot will have the dimensions \a width - and \a height in pixels. If either \a width or \a height is zero, the exported image will have - the same dimensions as the QCustomPlot widget currently has. Line widths and texts etc. are not - scaled up when larger widths/heights are used. If you want that effect, use the \a scale parameter. - - For example, if you set both \a width and \a height to 100 and \a scale to 2, you will end up with an - image file of size 200*200 in which all graphical elements are scaled up by factor 2 (line widths, - texts, etc.). This scaling is not done by stretching a 100*100 image, the result will have full - 200*200 pixel resolution. - - \warning If calling this function inside the constructor of the parent of the QCustomPlot widget - (i.e. the MainWindow constructor, if QCustomPlot is inside the MainWindow), always provide - explicit non-zero widths and heights. If you leave \a width or \a height as 0 (default), this - function uses the current width and height of the QCustomPlot widget. However, in Qt, these - aren't defined yet inside the constructor, so you would get an image that has strange - widths/heights. - - The objects of the plot will appear in the current selection state. If you don't want any selected - objects to be painted in their selected look, deselect everything with \ref deselectAll before calling - this function. - - If you want the plot to be painted in a PNG with transparent background, call \ref setColor with a - transparent color, e.g. Qt::transparent, before saving. - - PNG compression can be controlled with the \a quality parameter which must be between 0 and 100 or - -1 to use the default setting. - - Returns true on success. If this function fails, most likely the PNG format isn't supported by - the system, see Qt docs about QImageWriter::supportedImageFormats(). - - \see savePdf, saveBmp, saveJpg, saveRastered -*/ -bool QCustomPlot::savePng(const QString &fileName, int width, int height, double scale, int quality) -{ - return saveRastered(fileName, width, height, scale, "PNG", quality); -} - -/*! - Saves a JPG image file to \a fileName on disc. The output plot will have the dimensions \a width - and \a height in pixels. If either \a width or \a height is zero, the exported image will have - the same dimensions as the QCustomPlot widget currently has. Line widths and texts etc. are not - scaled up when larger widths/heights are used. If you want that effect, use the \a scale parameter. - - For example, if you set both \a width and \a height to 100 and \a scale to 2, you will end up with an - image file of size 200*200 in which all graphical elements are scaled up by factor 2 (line widths, - texts, etc.). This scaling is not done by stretching a 100*100 image, the result will have full - 200*200 pixel resolution. - - \warning If calling this function inside the constructor of the parent of the QCustomPlot widget - (i.e. the MainWindow constructor, if QCustomPlot is inside the MainWindow), always provide - explicit non-zero widths and heights. If you leave \a width or \a height as 0 (default), this - function uses the current width and height of the QCustomPlot widget. However, in Qt, these - aren't defined yet inside the constructor, so you would get an image that has strange - widths/heights. - - The objects of the plot will appear in the current selection state. If you don't want any selected - objects to be painted in their selected look, deselect everything with \ref deselectAll before calling - this function. - - JPG compression can be controlled with the \a quality parameter which must be between 0 and 100 or - -1 to use the default setting. - - Returns true on success. If this function fails, most likely the JPG format isn't supported by - the system, see Qt docs about QImageWriter::supportedImageFormats(). - - \see savePdf, savePng, saveBmp, saveRastered -*/ -bool QCustomPlot::saveJpg(const QString &fileName, int width, int height, double scale, int quality) -{ - return saveRastered(fileName, width, height, scale, "JPG", quality); -} - -/*! - Saves a BMP image file to \a fileName on disc. The output plot will have the dimensions \a width - and \a height in pixels. If either \a width or \a height is zero, the exported image will have - the same dimensions as the QCustomPlot widget currently has. Line widths and texts etc. are not - scaled up when larger widths/heights are used. If you want that effect, use the \a scale parameter. - - For example, if you set both \a width and \a height to 100 and \a scale to 2, you will end up with an - image file of size 200*200 in which all graphical elements are scaled up by factor 2 (line widths, - texts, etc.). This scaling is not done by stretching a 100*100 image, the result will have full - 200*200 pixel resolution. - - \warning If calling this function inside the constructor of the parent of the QCustomPlot widget - (i.e. the MainWindow constructor, if QCustomPlot is inside the MainWindow), always provide - explicit non-zero widths and heights. If you leave \a width or \a height as 0 (default), this - function uses the current width and height of the QCustomPlot widget. However, in Qt, these - aren't defined yet inside the constructor, so you would get an image that has strange - widths/heights. - - The objects of the plot will appear in the current selection state. If you don't want any selected - objects to be painted in their selected look, deselect everything with \ref deselectAll before calling - this function. - - Returns true on success. If this function fails, most likely the BMP format isn't supported by - the system, see Qt docs about QImageWriter::supportedImageFormats(). - - \see savePdf, savePng, saveJpg, saveRastered -*/ -bool QCustomPlot::saveBmp(const QString &fileName, int width, int height, double scale) -{ - return saveRastered(fileName, width, height, scale, "BMP"); -} - -/*! \internal - - Returns a minimum size hint of QSize(50, 50). This prevents QCustomPlot from being collapsed to - size/width zero when placed in a layout where other components try to take in as much space as - possible (e.g. QMdiArea). - - (To overwrite this minimum size hint of QCustomPlot, simply call QWidget::setMinimumSize in the - QCustomPlot widget.) -*/ -QSize QCustomPlot::minimumSizeHint() const -{ - return QSize(50, 50); -} - -/*! \internal - - Event handler for when the QCustomPlot widget needs repainting. This does not cause a replot, but - draws the internal buffer on the widget surface. -*/ -void QCustomPlot::paintEvent(QPaintEvent *event) -{ - Q_UNUSED(event); - QPainter painter(this); - painter.drawPixmap(0, 0, mPaintBuffer); -} - -/*! \internal - - Event handler for a resize of the QCustomPlot widget. Causes the internal buffer to be resized to - the new size. The viewport and the axis rect are resized appropriately. Finally a replot is - performed. -*/ -void QCustomPlot::resizeEvent(QResizeEvent *event) -{ - // resize and repaint the buffer: - mPaintBuffer = QPixmap(event->size()); - mViewport = rect(); - updateAxisRect(); - replot(); -} - -/*! \internal - - Event handler for when a double click occurs. -*/ -void QCustomPlot::mouseDoubleClickEvent(QMouseEvent *event) -{ - emit mouseDoubleClick(event); - - // emit specialized object double click signals: - bool foundHit = false; - // for legend: - if (receivers(SIGNAL(legendDoubleClick(QCPLegend*,QCPAbstractLegendItem*,QMouseEvent*))) > 0) - { - if (legend->selectTestLegend(event->pos())) - { - emit legendDoubleClick(legend, legend->selectTestItem(event->pos()), event); - foundHit = true; - } - } - // for plottables: - if (!foundHit && receivers(SIGNAL(plottableDoubleClick(QCPAbstractPlottable*,QMouseEvent*))) > 0) - { - if (QCPAbstractPlottable *ap = plottableAt(event->pos(), false)) - { - emit plottableDoubleClick(ap, event); - foundHit = true; - } - } - // for items: - if (!foundHit && receivers(SIGNAL(itemDoubleClick(QCPAbstractItem*,QMouseEvent*))) > 0) - { - if (QCPAbstractItem *ai = itemAt(event->pos(), false)) - { - emit itemDoubleClick(ai, event); - foundHit = true; - } - } - // for axes: - if (!foundHit && receivers(SIGNAL(axisDoubleClick(QCPAxis*,QCPAxis::SelectablePart,QMouseEvent*))) > 0) - { - QVector axes = QVector() << xAxis << yAxis << xAxis2 << yAxis2; - for (int i=0; iselectTest(event->pos()); - if (part != QCPAxis::spNone) - { - foundHit = true; - emit axisDoubleClick(axes.at(i), part, event); - break; - } - } - } - // for title: - if (!foundHit && receivers(SIGNAL(titleDoubleClick(QMouseEvent*))) > 0) - { - if (selectTestTitle(event->pos())) - { - emit titleDoubleClick(event); - foundHit = true; - } - } -} - -/*! \internal - - Event handler for when a mouse button is pressed. If the left mouse button is pressed, the range - dragging interaction is initialized (the actual range manipulation happens in the \ref - mouseMoveEvent). - - The mDragging flag is set to true and some anchor points are set that are needed to determine the - distance the mouse was dragged in the mouse move/release events later. - - \see mouseMoveEvent, mouseReleaseEvent -*/ -void QCustomPlot::mousePressEvent(QMouseEvent *event) -{ - emit mousePress(event); - mDragStart = event->pos(); // need this even when not LeftButton is pressed, to determine in releaseEvent whether it was a full click (no position change between press and release) - if (event->buttons() & Qt::LeftButton) - { - mDragging = true; - // initialize antialiasing backup in case we start dragging: - if (mNoAntialiasingOnDrag) - { - mAADragBackup = antialiasedElements(); - mNotAADragBackup = notAntialiasedElements(); - } - // Mouse range dragging interaction: - if (mInteractions.testFlag(iRangeDrag)) - { - mDragStartHorzRange = mRangeDragHorzAxis->range(); - mDragStartVertRange = mRangeDragVertAxis->range(); - } - } - - QWidget::mousePressEvent(event); -} - -/*! \internal - - Event handler for when the cursor is moved. This is where the built-in range dragging mechanism - is handled. - - \see mousePressEvent, mouseReleaseEvent -*/ -void QCustomPlot::mouseMoveEvent(QMouseEvent *event) -{ - emit mouseMove(event); - - // Mouse range dragging interaction: - if (mInteractions.testFlag(iRangeDrag)) - { - if (mDragging) - { - if (mRangeDrag.testFlag(Qt::Horizontal)) - { - if (mRangeDragHorzAxis->mScaleType == QCPAxis::stLinear) - { - double diff = mRangeDragHorzAxis->pixelToCoord(mDragStart.x()) - mRangeDragHorzAxis->pixelToCoord(event->pos().x()); - mRangeDragHorzAxis->setRange(mDragStartHorzRange.lower+diff, mDragStartHorzRange.upper+diff); - } else if (mRangeDragHorzAxis->mScaleType == QCPAxis::stLogarithmic) - { - double diff = mRangeDragHorzAxis->pixelToCoord(mDragStart.x()) / mRangeDragHorzAxis->pixelToCoord(event->pos().x()); - mRangeDragHorzAxis->setRange(mDragStartHorzRange.lower*diff, mDragStartHorzRange.upper*diff); - } - } - if (mRangeDrag.testFlag(Qt::Vertical)) - { - if (mRangeDragVertAxis->mScaleType == QCPAxis::stLinear) - { - double diff = mRangeDragVertAxis->pixelToCoord(mDragStart.y()) - mRangeDragVertAxis->pixelToCoord(event->pos().y()); - mRangeDragVertAxis->setRange(mDragStartVertRange.lower+diff, mDragStartVertRange.upper+diff); - } else if (mRangeDragVertAxis->mScaleType == QCPAxis::stLogarithmic) - { - double diff = mRangeDragVertAxis->pixelToCoord(mDragStart.y()) / mRangeDragVertAxis->pixelToCoord(event->pos().y()); - mRangeDragVertAxis->setRange(mDragStartVertRange.lower*diff, mDragStartVertRange.upper*diff); - } - } - if (mRangeDrag != 0) // if either vertical or horizontal drag was enabled, do a replot - { - if (mNoAntialiasingOnDrag) - setNotAntialiasedElements(QCP::aeAll); - replot(); - } - } - } - - QWidget::mouseMoveEvent(event); -} - -/*! \internal - - Event handler for when a mouse button is released. This is where the selection mechanism is - handled. - - \see mousePressEvent, mouseMoveEvent -*/ -void QCustomPlot::mouseReleaseEvent(QMouseEvent *event) -{ - emit mouseRelease(event); - mDragging = false; - bool doReplot = false; - if (mNoAntialiasingOnDrag) - { - setAntialiasedElements(mAADragBackup); - setNotAntialiasedElements(mNotAADragBackup); - doReplot = true; - } - - // determine whether it was a drag or click operation: - if ((mDragStart-event->pos()).manhattanLength() < 5) // was a click - { - // Mouse selection interaction: - if ((mInteractions & (iSelectPlottables|iSelectItems|iSelectAxes|iSelectLegend|iSelectTitle)) > 0 - && event->button() == Qt::LeftButton) - { - bool selectionFound = false; - bool emitChangedSignal = false; - bool additiveSelection = mInteractions.testFlag(iMultiSelect) && event->modifiers().testFlag(mMultiSelectModifier); - // Mouse selection of legend: - if (mInteractions.testFlag(iSelectLegend)) - selectionFound |= legend->handleLegendSelection(event, additiveSelection, emitChangedSignal); - // Mouse selection of plottables: - if (mInteractions.testFlag(iSelectPlottables)) - selectionFound |= handlePlottableSelection((!selectionFound || additiveSelection) ? event : 0, additiveSelection, emitChangedSignal); - // Mouse selection of items: - if (mInteractions.testFlag(iSelectItems)) - selectionFound |= handleItemSelection((!selectionFound || additiveSelection) ? event : 0, additiveSelection, emitChangedSignal); - // Mouse selection of axes: - if (mInteractions.testFlag(iSelectAxes)) - selectionFound |= handleAxisSelection((!selectionFound || additiveSelection) ? event : 0, additiveSelection, emitChangedSignal); - // Mouse selection of title: - if (mInteractions.testFlag(iSelectTitle)) - selectionFound |= handleTitleSelection((!selectionFound || additiveSelection) ? event : 0, additiveSelection, emitChangedSignal); - - if (emitChangedSignal) - emit selectionChangedByUser(); - doReplot = true; - } - - // emit specialized object click signals: - bool foundHit = false; - // for legend: - if (receivers(SIGNAL(legendClick(QCPLegend*,QCPAbstractLegendItem*,QMouseEvent*))) > 0) - { - if (legend->selectTestLegend(event->pos())) - { - emit legendClick(legend, legend->selectTestItem(event->pos()), event); - foundHit = true; - } - } - // for plottables: - if (!foundHit && receivers(SIGNAL(plottableClick(QCPAbstractPlottable*,QMouseEvent*))) > 0) - { - if (QCPAbstractPlottable *ap = plottableAt(event->pos(), false)) - { - emit plottableClick(ap, event); - foundHit = true; - } - } - // for items: - if (!foundHit && receivers(SIGNAL(itemClick(QCPAbstractItem*,QMouseEvent*))) > 0) - { - if (QCPAbstractItem *ai = itemAt(event->pos(), false)) - { - emit itemClick(ai, event); - foundHit = true; - } - } - // for axes: - if (!foundHit && receivers(SIGNAL(axisClick(QCPAxis*,QCPAxis::SelectablePart,QMouseEvent*))) > 0) - { - QVector axes = QVector() << xAxis << yAxis << xAxis2 << yAxis2; - for (int i=0; iselectTest(event->pos()); - if (part != QCPAxis::spNone) - { - foundHit = true; - emit axisClick(axes.at(i), part, event); - break; - } - } - } - // for title: - if (!foundHit && receivers(SIGNAL(titleClick(QMouseEvent*))) > 0) - { - if (selectTestTitle(event->pos())) - { - emit titleClick(event); - foundHit = true; - } - } - } // was a click end - - if (doReplot) - replot(); - - QWidget::mouseReleaseEvent(event); -} - -/*! \internal - - Event handler for mouse wheel events. First, the mouseWheel signal is emitted. - If rangeZoom is Qt::Horizontal, Qt::Vertical or both, the ranges of the axes defined as - rangeZoomHorzAxis and rangeZoomVertAxis are scaled. The center of the scaling - operation is the current cursor position inside the plot. The scaling factor - is dependant on the mouse wheel delta (which direction the wheel was rotated) - to provide a natural zooming feel. The Strength of the zoom can be controlled via - \ref setRangeZoomFactor. - - Note, that event->delta() is usually +/-120 for single rotation steps. However, if the mouse - wheel is turned rapidly, many steps may bunch up to one event, so the event->delta() may then be - multiples of 120. This is taken into account here, by calculating \a wheelSteps and using it as - exponent of the range zoom factor. This takes care of the wheel direction automatically, by - inverting the factor, when the wheel step is negative (f^-1 = 1/f). -*/ -void QCustomPlot::wheelEvent(QWheelEvent *event) -{ - emit mouseWheel(event); - - // Mouse range zooming interaction: - if (mInteractions.testFlag(iRangeZoom)) - { - if (mRangeZoom != 0) - { - double factor; - double wheelSteps = event->delta()/120.0; // a single step delta is +/-120 usually - if (mRangeZoom.testFlag(Qt::Horizontal)) - { - factor = pow(mRangeZoomFactorHorz, wheelSteps); - mRangeZoomHorzAxis->scaleRange(factor, mRangeZoomHorzAxis->pixelToCoord(event->pos().x())); - } - if (mRangeZoom.testFlag(Qt::Vertical)) - { - factor = pow(mRangeZoomFactorVert, wheelSteps); - mRangeZoomVertAxis->scaleRange(factor, mRangeZoomVertAxis->pixelToCoord(event->pos().y())); - } - replot(); - } - } - - QWidget::wheelEvent(event); -} - -/*! \internal - - Handles a mouse \a event for the plottable selection interaction. Returns true, when a selectable - plottable was hit by the mouse event. The output variable \a modified is set to true when the - selection state of a plottable has changed. - - When \a additiveSelecton is true, any new selections become selected in addition to the recent - selections. The recent selections are not cleared. Further, clicking on one object multiple times - in additive selection mode, toggles the selection of that object on and off. - - To indicate that all plottables that are selectable shall be deselected, pass 0 as \a event. - - Unlike for axis and legend selection, this function can't be exported to the respective class - itself (i.e. QCPAbstractPlottable). The function needs to know the distance of the mouse event to - all plottables in the plot, in order to choose the plottable with the smallest distance. This - wouldn't work if it were local to a single plottable. -*/ -bool QCustomPlot::handlePlottableSelection(QMouseEvent *event, bool additiveSelection, bool &modified) -{ - // Note: This code is basically identical to handleItemSelection, only for plottables - - bool selectionFound = false; - if (event) - { - QCPAbstractPlottable *plottableSelection = plottableAt(event->pos(), true); - // handle selection of found plottable: - if (plottableSelection) - { - selectionFound = true; - if (!plottableSelection->selected() || additiveSelection) - { - plottableSelection->setSelected(!plottableSelection->selected()); - modified = true; - } - } - // deselect all others (if plottableSelection is 0, all plottables are deselected): - if (!additiveSelection) - { - for (int i=0; iselected() && mPlottables.at(i)->selectable()) - { - mPlottables.at(i)->setSelected(false); - modified = true; - } - } - } - } else // event == 0, so deselect selectable plottables - { - for (int i=0; iselected() && mPlottables.at(i)->selectable()) - { - mPlottables.at(i)->setSelected(false); - modified = true; - } - } - } - return selectionFound; -} - -/*! \internal - - Handles a mouse \a event for the item selection interaction. Returns true, when a selectable - item was hit by the mouse event. The output variable \a modified is set to true when the - selection state of an item has changed. - - When \a additiveSelecton is true, any new selections become selected in addition to the recent - selections. The recent selections are not cleared. Further, clicking on one object multiple times - in additive selection mode, toggles the selection of that object on and off. - - To indicate that all items that are selectable shall be deselected, pass 0 as \a event. - - Unlike for axis and legend selection, this function can't be exported to the respective class - itself (i.e. QCPAbstractItem). The function needs to know the distance of the mouse event to - all items in the plot, in order to choose the item with the smallest distance. This - wouldn't work if it were local to a single item. -*/ -bool QCustomPlot::handleItemSelection(QMouseEvent *event, bool additiveSelection, bool &modified) -{ - // Note: This code is basically identical to handlePlottableSelection, only for items - - bool selectionFound = false; - if (event) - { - QCPAbstractItem *itemSelection = itemAt(event->pos(), true); - // handle selection of found plottable: - if (itemSelection) - { - selectionFound = true; - if (!itemSelection->selected() || additiveSelection) - { - itemSelection->setSelected(!itemSelection->selected()); - modified = true; - } - } - // deselect all others (if itemSelection is 0, all items are deselected): - if (!additiveSelection) - { - for (int i=0; iselected() && mItems.at(i)->selectable()) - { - mItems.at(i)->setSelected(false); - modified = true; - } - } - } - } else // event == 0, so deselect selectable items - { - for (int i=0; iselected() && mItems.at(i)->selectable()) - { - mItems.at(i)->setSelected(false); - modified = true; - } - } - } - return selectionFound; -} - -/*! \internal - - Handles a mouse \a event for the axis selection interaction. Returns true, when a selectable axis - part was hit by the mouse event. The output variable \a modified is set to true when the - selection state of an axis has changed. - - When \a additiveSelecton is true, any new selections become selected in addition to the recent - selections. The recent selections are not cleared. Further, clicking on one object multiple times - in additive selection mode, toggles the selection of that object on and off. - - To indicate that all axes shall be deselected, pass 0 as \a event. -*/ -bool QCustomPlot::handleAxisSelection(QMouseEvent *event, bool additiveSelection, bool &modified) -{ - bool selectionFound = false; - QVector axes = QVector() << xAxis << yAxis << xAxis2 << yAxis2; - for (int i=0; ihandleAxisSelection((!selectionFound || additiveSelection) ? event : 0, additiveSelection, modified); - return selectionFound; -} - -/*! \internal - - Handles a mouse \a event for the title selection interaction. Returns true, when the title was - hit by the mouse event. The output variable \a modified is set to true when the selection state - of the title has changed. - - When \a additiveSelecton is true, any new selections become selected in addition to the recent - selections. The recent selections are not cleared. Further, clicking on one object multiple times - in additive selection mode, toggles the selection of that object on and off. - - To indicate that the title shall be deselected, pass 0 as \a event. -*/ -bool QCustomPlot::handleTitleSelection(QMouseEvent *event, bool additiveSelection, bool &modified) -{ - bool selectionFound = false; - if (event && selectTestTitle(event->pos())) // hit, select title - { - selectionFound = true; - if (!titleSelected() || additiveSelection) - { - setTitleSelected(!titleSelected()); - modified = true; - } - } else // no hit or event == 0, deselect title - { - if (titleSelected() && !additiveSelection) - { - setTitleSelected(false); - modified = true; - } - } - return selectionFound; -} - -/*! \internal - - This is the main draw function which first generates the tick vectors of all axes, - calculates and applies appropriate margins if autoMargin is true and finally draws - all elements with the passed \a painter. (axis background, title, subgrid, grid, axes, plottables) -*/ -void QCustomPlot::draw(QCPPainter *painter) -{ - // calculate title bounding box: - if (!mTitle.isEmpty()) - { - painter->setFont(titleSelected() ? mSelectedTitleFont : mTitleFont); - mTitleBoundingBox = painter->fontMetrics().boundingRect(mViewport, Qt::TextDontClip | Qt::AlignHCenter, mTitle); - } else - mTitleBoundingBox = QRect(); - - // prepare values of ticks and tick strings: - xAxis->setupTickVectors(); - yAxis->setupTickVectors(); - xAxis2->setupTickVectors(); - yAxis2->setupTickVectors(); - // set auto margin such that tick/axis labels etc. are not clipped: - if (mAutoMargin) - { - setMargin(yAxis->calculateMargin(), - yAxis2->calculateMargin(), - xAxis2->calculateMargin()+mTitleBoundingBox.height(), - xAxis->calculateMargin()); - } - // position legend: - legend->reArrange(); - - // draw axis background: - drawAxisBackground(painter); - - // draw all layered objects (grid, axes, plottables, items, legend,...): - for (int layerIndex=0; layerIndex < mLayers.size(); ++layerIndex) - { - QList layerChildren = mLayers.at(layerIndex)->children(); - for (int k=0; k < layerChildren.size(); ++k) - { - QCPLayerable *child = layerChildren.at(k); - if (child->visible()) - { - painter->save(); - painter->setClipRect(child->clipRect().translated(0, -1)); - child->applyDefaultAntialiasingHint(painter); - child->draw(painter); - painter->restore(); - } - } - } - - // draw title: - if (!mTitle.isEmpty()) - { - painter->setFont(titleSelected() ? mSelectedTitleFont : mTitleFont); - painter->setPen(QPen(titleSelected() ? mSelectedTitleColor : mTitleColor)); - painter->drawText(mTitleBoundingBox, Qt::TextDontClip | Qt::AlignHCenter, mTitle); - } -} - -/*! \internal - - If an axis background is provided via \ref setAxisBackground, this function first buffers the - scaled version depending on \ref setAxisBackgroundScaled and \ref setAxisBackgroundScaledMode and - then draws it inside the current axisRect with the provided \a painter. The scaled version is - buffered in mScaledAxisBackground to prevent the need for rescaling at every redraw. It is only - updated, when the axisRect has changed in a way that requires a rescale of the background pixmap - (this is dependant on the \ref setAxisBackgroundScaledMode), or when a differend axis backgroud - was set. - - \see draw, setAxisBackground, setAxisBackgroundScaled, setAxisBackgroundScaledMode -*/ -void QCustomPlot::drawAxisBackground(QCPPainter *painter) -{ - if (!mAxisBackground.isNull()) - { - if (mAxisBackgroundScaled) - { - // check whether mScaledAxisBackground needs to be updated: - QSize scaledSize(mAxisBackground.size()); - scaledSize.scale(mAxisRect.size(), mAxisBackgroundScaledMode); - if (mScaledAxisBackground.size() != scaledSize) - mScaledAxisBackground = mAxisBackground.scaled(mAxisRect.size(), mAxisBackgroundScaledMode, Qt::SmoothTransformation); - painter->drawPixmap(mAxisRect.topLeft(), mScaledAxisBackground, QRect(0, 0, mAxisRect.width(), mAxisRect.height()) & mScaledAxisBackground.rect()); - } else - { - painter->drawPixmap(mAxisRect.topLeft(), mAxisBackground, QRect(0, 0, mAxisRect.width(), mAxisRect.height())); - } - } -} - -/*! \internal - - calculates mAxisRect by applying the margins inward to mViewport. The axisRect is then passed on - to all axes via QCPAxis::setAxisRect - - \see setMargin, setAxisRect -*/ -void QCustomPlot::updateAxisRect() -{ - mAxisRect = mViewport.adjusted(mMarginLeft, mMarginTop, -mMarginRight, -mMarginBottom); - xAxis->setAxisRect(mAxisRect); - yAxis->setAxisRect(mAxisRect); - xAxis2->setAxisRect(mAxisRect); - yAxis2->setAxisRect(mAxisRect); -} - -/*! \internal - - Returns whether the point \a pos in pixels hits the plot title. -*/ -bool QCustomPlot::selectTestTitle(const QPointF &pos) const -{ - return mTitleBoundingBox.contains(pos.toPoint()); -} - -/*! - Saves the plot to a rastered image file \a fileName in the image format \a - format. The plot is sized to \a width and \a height in pixels and scaled with - \a scale. (width 100 and scale 2.0 lead to a full resolution file with width - 200) If the \a format supports compression, \a quality may be between 0 and - 100 to control it. - - Returns true on success. If this function fails, most likely the given \a format isn't supported - by the system, see Qt docs about QImageWriter::supportedImageFormats(). - - \see saveBmp, saveJpg, savePng -*/ -bool QCustomPlot::saveRastered(const QString &fileName, int width, int height, double scale, const char *format, int quality) -{ - int newWidth, newHeight; - if (width == 0 || height == 0) - { - newWidth = this->width(); - newHeight = this->height(); - } else - { - newWidth = width; - newHeight = height; - } - int scaledWidth = qRound(scale*newWidth); - int scaledHeight = qRound(scale*newHeight); - - QPixmap pngBuffer(scaledWidth, scaledHeight); // use QPixmap instead of QImage (like live painting buffer), because it supports background transparency (of mColor). - pngBuffer.fill(mColor); - QCPPainter painter(&pngBuffer); - QRect oldViewport = mViewport; - mViewport = QRect(0, 0, newWidth, newHeight); - updateAxisRect(); - if (!qFuzzyCompare(scale, 1.0)) - { - if (scale > 1.0) // for scale < 1 we always want cosmetic pens where possible, because else lines would disappear - { - painter.setScaledExportMode(true); - painter.setRenderHint(QPainter::NonCosmeticDefaultPen); - } - painter.scale(scale, scale); - } - draw(&painter); - mViewport = oldViewport; - updateAxisRect(); - return pngBuffer.save(fileName, format, quality); -} - - -// ================================================================================ -// =================== QCPAbstractPlottable -// ================================================================================ - -/*! \class QCPAbstractPlottable - \brief The abstract base class for all data representing objects in a plot. - - It defines a very basic interface like name, pen, brush, visibility etc. Since this class is - abstract, it can't be instantiated. Use one of the subclasses or create a subclass yourself (see - below), to create new ways of displaying data. - - All further specifics are in the subclasses, for example: - \li A normal graph with possibly a line, scatter points and error bars is displayed by \ref QCPGraph - (typically created with \ref QCustomPlot::addGraph). - \li A parametric curve can be displayed with \ref QCPCurve. - \li A stackable bar chart can be achieved with \ref QCPBars. - \li A box of a statistical box plot is created with \ref QCPStatisticalBox. - - \section plottables-subclassing Creating own plottables - - To create an own plottable, you implement a subclass of QCPAbstractPlottable. These are the pure - virtual functions, you must implement: - \li \ref clearData - \li \ref selectTest - \li \ref draw - \li \ref drawLegendIcon - \li \ref getKeyRange - \li \ref getValueRange - - See the documentation of those functions for what they need to do. - - For drawing your plot, you can use the \ref coordsToPixels functions to translate a point in plot - coordinates to pixel coordinates. This function is quite convenient, because it takes the - orientation of the key and value axes into account for you (x and y are swapped when the key axis - is vertical and the value axis horizontal). If you are worried about performance (i.e. you need - to translate many points in a loop like QCPGraph), you can directly use \ref - QCPAxis::coordToPixel. However, you must then take care about the orientation of the axis - yourself. - - From QCPAbstractPlottable you inherit the following members you may use: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    QCustomPlot *\b mParentPlotA pointer to the parent QCustomPlot instance. This is adopted from the axes that are passed in the constructor.
    QString \b mNameThe name of the plottable.
    bool \b mVisibleWhether the plot is visible or not. When this is false, you shouldn't draw the data in the \ref draw function (\ref draw is always called, no matter what mVisible is).
    QPen \b mPenThe generic pen of the plottable. You should use this pen for the most prominent data representing lines in the plottable (e.g QCPGraph uses this pen for its graph lines and scatters)
    QPen \b mSelectedPenThe generic pen that should be used when the plottable is selected (hint: \ref mainPen gives you the right pen, depending on selection state).
    QBrush \b mBrushThe generic brush of the plottable. You should use this brush for the most prominent fillable structures in the plottable (e.g. QCPGraph uses this brush to control filling under the graph)
    QBrush \b mSelectedBrushThe generic brush that should be used when the plottable is selected (hint: \ref mainBrush gives you the right brush, depending on selection state).
    QCPAxis *\b mKeyAxis, *\b mValueAxisThe key and value axes this plottable is attached to. Call their QCPAxis::coordToPixel functions to translate coordinates to pixels in either the key or value dimension.
    bool \b mSelectedindicates whether the plottable is selected or not.
    -*/ - -/* start of documentation of pure virtual functions */ - -/*! \fn void QCPAbstractPlottable::clearData() = 0 - Clears all data in the plottable. -*/ - -/*! \fn double QCPAbstractPlottable::selectTest(const QPointF &pos) const = 0 - - This function is used to decide whether a click hits a plottable or not. - - \a pos is a point in pixel coordinates on the QCustomPlot surface. This function returns the - shortest pixel distance of this point to the plottable (e.g. to the scatters/lines of a graph). - If the plottable is either invisible, contains no data or the distance couldn't be determined, - -1.0 is returned. \ref setSelectable has no influence on the return value of this function. - - If the plottable is represented not by single lines but by an area like QCPBars or - QCPStatisticalBox, a click inside the area returns a constant value greater zero (typically 99% - of the selectionTolerance of the parent QCustomPlot). If the click lies outside the area, this - function returns -1.0. - - Providing a constant value for area objects allows selecting line objects even when they are - obscured by such area objects, by clicking close to the lines (i.e. closer than - 0.99*selectionTolerance). - - The actual setting of the selection state is not done by this function. This is handled by the - parent QCustomPlot when the mouseReleaseEvent occurs. - - \see setSelected, QCustomPlot::setInteractions -*/ - -/*! \fn void QCPAbstractPlottable::draw(QCPPainter *painter) = 0 - \internal - - Draws this plottable with the provided \a painter. Called by \ref QCustomPlot::draw on all its - visible plottables. - - The cliprect of the provided painter is set to the axis rect of the key/value axis of this - plottable (what \ref clipRect returns), before this function is called. -*/ - -/*! \fn void QCPAbstractPlottable::drawLegendIcon(QCPPainter *painter, const QRect &rect) const = 0 - \internal - - called by QCPLegend::draw (via QCPPlottableLegendItem::draw) to create a graphical representation - of this plottable inside \a rect, next to the plottable name. -*/ - -/*! \fn QCPRange QCPAbstractPlottable::getKeyRange(bool &validRange, SignDomain inSignDomain) const = 0 - \internal - - called by rescaleAxes functions to get the full data key bounds. For logarithmic plots, one can - set \a inSignDomain to either \ref sdNegative or \ref sdPositive in order to restrict the - returned range to that sign domain. E.g. when only negative range is wanted, set \a inSignDomain - to \ref sdNegative and all positive points will be ignored for range calculation. For no - restriction, just set \a inSignDomain to \ref sdBoth (default). \a validRange is an output - parameter that indicates whether a proper range could be found or not. If this is false, you - shouldn't use the returned range (e.g. no points in data). - - \see rescaleAxes, getValueRange -*/ - -/*! \fn QCPRange QCPAbstractPlottable::getValueRange(bool &validRange, SignDomain inSignDomain) const = 0 - \internal - - called by rescaleAxes functions to get the full data value bounds. For logarithmic plots, one can - set \a inSignDomain to either \ref sdNegative or \ref sdPositive in order to restrict the - returned range to that sign domain. E.g. when only negative range is wanted, set \a inSignDomain - to \ref sdNegative and all positive points will be ignored for range calculation. For no - restriction, just set \a inSignDomain to \ref sdBoth (default). \a validRange is an output - parameter that indicates whether a proper range could be found or not. If this is false, you - shouldn't use the returned range (e.g. no points in data). - - \see rescaleAxes, getKeyRange -*/ - -/* end of documentation of pure virtual functions */ -/* start of documentation of signals */ - -/*! \fn void QCPAbstractPlottable::selectionChanged(bool selected) - This signal is emitted when the selection state of this plottable has changed, either by user interaction - or by a direct call to \ref setSelected. -*/ - -/* end of documentation of signals */ - -/*! - Constructs an abstract plottable which uses \a keyAxis as its key axis ("x") and \a valueAxis as - its value axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance - and not have the same orientation. If either of these restrictions is violated, a corresponding - message is printed to the debug output (qDebug), the construction is not aborted, though. - - Since QCPAbstractPlottable is an abstract class that defines the basic interface to plottables - (i.e. any form of data representation inside a plot, like graphs, curves etc.), it can't be - directly instantiated. - - You probably want one of the subclasses like \ref QCPGraph and \ref QCPCurve instead. - \see setKeyAxis, setValueAxis -*/ -QCPAbstractPlottable::QCPAbstractPlottable(QCPAxis *keyAxis, QCPAxis *valueAxis) : - QCPLayerable(keyAxis->parentPlot()), - mName(""), - mAntialiasedFill(true), - mAntialiasedScatters(true), - mAntialiasedErrorBars(false), - mPen(Qt::black), - mSelectedPen(Qt::black), - mBrush(Qt::NoBrush), - mSelectedBrush(Qt::NoBrush), - mKeyAxis(keyAxis), - mValueAxis(valueAxis), - mSelected(false), - mSelectable(true) -{ - if (keyAxis->parentPlot() != valueAxis->parentPlot()) - qDebug() << Q_FUNC_INFO << "Parent plot of keyAxis is not the same as that of valueAxis."; - if (keyAxis->orientation() == valueAxis->orientation()) - qDebug() << Q_FUNC_INFO << "keyAxis and valueAxis must be orthogonal to each other."; -} - -/*! - The name is the textual representation of this plottable as it is displayed in the QCPLegend of - the parent QCustomPlot. It may contain any utf-8 characters, including newlines. -*/ -void QCPAbstractPlottable::setName(const QString &name) -{ - mName = name; -} - -/*! - Sets whether fills of this plottable is drawn antialiased or not. - - Note that this setting may be overridden by \ref QCustomPlot::setAntialiasedElements and \ref - QCustomPlot::setNotAntialiasedElements. -*/ -void QCPAbstractPlottable::setAntialiasedFill(bool enabled) -{ - mAntialiasedFill = enabled; -} - -/*! - Sets whether the scatter symbols of this plottable are drawn antialiased or not. - - Note that this setting may be overridden by \ref QCustomPlot::setAntialiasedElements and \ref - QCustomPlot::setNotAntialiasedElements. -*/ -void QCPAbstractPlottable::setAntialiasedScatters(bool enabled) -{ - mAntialiasedScatters = enabled; -} - -/*! - Sets whether the error bars of this plottable are drawn antialiased or not. - - Note that this setting may be overridden by \ref QCustomPlot::setAntialiasedElements and \ref - QCustomPlot::setNotAntialiasedElements. -*/ -void QCPAbstractPlottable::setAntialiasedErrorBars(bool enabled) -{ - mAntialiasedErrorBars = enabled; -} - - -/*! - The pen is used to draw basic lines that make up the plottable representation in the - plot. - - For example, the \ref QCPGraph subclass draws its graph lines and scatter points - with this pen. - - \see setBrush -*/ -void QCPAbstractPlottable::setPen(const QPen &pen) -{ - mPen = pen; -} - -/*! - When the plottable is selected, this pen is used to draw basic lines instead of the normal - pen set via \ref setPen. - - \see setSelected, setSelectable, setSelectedBrush, selectTest -*/ -void QCPAbstractPlottable::setSelectedPen(const QPen &pen) -{ - mSelectedPen = pen; -} - -/*! - The brush is used to draw basic fills of the plottable representation in the - plot. The Fill can be a color, gradient or texture, see the usage of QBrush. - - For example, the \ref QCPGraph subclass draws the fill under the graph with this brush, when - it's not set to Qt::NoBrush. - - \see setPen -*/ -void QCPAbstractPlottable::setBrush(const QBrush &brush) -{ - mBrush = brush; -} - -/*! - When the plottable is selected, this brush is used to draw fills instead of the normal - brush set via \ref setBrush. - - \see setSelected, setSelectable, setSelectedPen, selectTest -*/ -void QCPAbstractPlottable::setSelectedBrush(const QBrush &brush) -{ - mSelectedBrush = brush; -} - -/*! - The key axis of a plottable can be set to any axis of a QCustomPlot, as long as it is orthogonal - to the plottable's value axis. This function performs no checks to make sure this is the case. - The typical mathematical choice is to use the x-axis (QCustomPlot::xAxis) as key axis and the - y-axis (QCustomPlot::yAxis) as value axis. - - Normally, the key and value axes are set in the constructor of the plottable (or \ref - QCustomPlot::addGraph when working with QCPGraphs through the dedicated graph interface). - - \see setValueAxis -*/ -void QCPAbstractPlottable::setKeyAxis(QCPAxis *axis) -{ - mKeyAxis = axis; -} - -/*! - The value axis of a plottable can be set to any axis of a QCustomPlot, as long as it is - orthogonal to the plottable's key axis. This function performs no checks to make sure this is the - case. The typical mathematical choice is to use the x-axis (QCustomPlot::xAxis) as key axis and - the y-axis (QCustomPlot::yAxis) as value axis. - - Normally, the key and value axes are set in the constructor of the plottable (or \ref - QCustomPlot::addGraph when working with QCPGraphs through the dedicated graph interface). - - \see setKeyAxis -*/ -void QCPAbstractPlottable::setValueAxis(QCPAxis *axis) -{ - mValueAxis = axis; -} - -/*! - Sets whether the user can (de-)select this plottable by clicking on the QCustomPlot surface. - (When \ref QCustomPlot::setInteractions contains iSelectPlottables.) - - However, even when \a selectable was set to false, it is possible to set the selection manually, - by calling \ref setSelected directly. - - \see setSelected -*/ -void QCPAbstractPlottable::setSelectable(bool selectable) -{ - mSelectable = selectable; -} - -/*! - Sets whether this plottable is selected or not. When selected, it uses a different pen and brush - to draw its lines and fills, see \ref setSelectedPen and \ref setSelectedBrush. - - The entire selection mechanism for plottables is handled automatically when \ref - QCustomPlot::setInteractions contains iSelectPlottables. You only need to call this function when - you wish to change the selection state manually. - - This function can change the selection state even when \ref setSelectable was set to false. - - emits the \ref selectionChanged signal when \a selected is different from the previous selection state. - - \see selectTest -*/ -void QCPAbstractPlottable::setSelected(bool selected) -{ - if (mSelected != selected) - { - mSelected = selected; - emit selectionChanged(mSelected); - } -} - -/*! - Rescales the key and value axes associated with this plottable to contain all displayed data, so - the whole plottable is visible. If the scaling of an axis is logarithmic, rescaleAxes will make - sure not to rescale to an illegal range i.e. a range containing different signs and/or zero. - Instead it will stay in the current sign domain and ignore all parts of the plottable that lie - outside of that domain. - - \a onlyEnlarge makes sure the ranges are only expanded, never reduced. So it's possible to show - multiple plottables in their entirety by multiple calls to rescaleAxes where the first call has - \a onlyEnlarge set to false (the default), and all subsequent set to true. -*/ -void QCPAbstractPlottable::rescaleAxes(bool onlyEnlarge) const -{ - rescaleKeyAxis(onlyEnlarge); - rescaleValueAxis(onlyEnlarge); -} - -/*! - Rescales the key axis of the plottable so the whole plottable is visible. - - See \ref rescaleAxes for detailed behaviour. -*/ -void QCPAbstractPlottable::rescaleKeyAxis(bool onlyEnlarge) const -{ - SignDomain signDomain = sdBoth; - if (mKeyAxis->scaleType() == QCPAxis::stLogarithmic) - signDomain = (mKeyAxis->range().upper < 0 ? sdNegative : sdPositive); - - bool validRange; - QCPRange newRange = getKeyRange(validRange, signDomain); - if (validRange) - { - if (onlyEnlarge) - { - if (mKeyAxis->range().lower < newRange.lower) - newRange.lower = mKeyAxis->range().lower; - if (mKeyAxis->range().upper > newRange.upper) - newRange.upper = mKeyAxis->range().upper; - } - mKeyAxis->setRange(newRange); - } -} - -/*! - Rescales the value axis of the plottable so the whole plottable is visible. - - See \ref rescaleAxes for detailed behaviour. -*/ -void QCPAbstractPlottable::rescaleValueAxis(bool onlyEnlarge) const -{ - SignDomain signDomain = sdBoth; - if (mValueAxis->scaleType() == QCPAxis::stLogarithmic) - signDomain = (mValueAxis->range().upper < 0 ? sdNegative : sdPositive); - - bool validRange; - QCPRange newRange = getValueRange(validRange, signDomain); - - if (validRange) - { - if (onlyEnlarge) - { - if (mValueAxis->range().lower < newRange.lower) - newRange.lower = mValueAxis->range().lower; - if (mValueAxis->range().upper > newRange.upper) - newRange.upper = mValueAxis->range().upper; - } - mValueAxis->setRange(newRange); - } -} - -/*! - Adds this plottable to the legend of the parent QCustomPlot. - - Normally, a QCPPlottableLegendItem is created and inserted into the legend. If the plottable - needs a more specialized representation in the plot, this function will take this into account - and instead create the specialized subclass of QCPAbstractLegendItem. - - Returns true on success, i.e. when a legend item associated with this plottable isn't already in - the legend. - - \see removeFromLegend, QCPLegend::addItem -*/ -bool QCPAbstractPlottable::addToLegend() -{ - if (!mParentPlot->legend->hasItemWithPlottable(this)) - { - mParentPlot->legend->addItem(new QCPPlottableLegendItem(mParentPlot->legend, this)); - return true; - } else - return false; -} - -/*! - Removes the plottable from the legend of the parent QCustomPlot. This means the - QCPAbstractLegendItem (usually a QCPPlottableLegendItem) that is associated with this plottable - is removed. - - Returns true on success, i.e. if a legend item associated with this plottable was found and - removed from the legend. - - \see addToLegend, QCPLegend::removeItem -*/ -bool QCPAbstractPlottable::removeFromLegend() const -{ - if (QCPPlottableLegendItem *lip = mParentPlot->legend->itemWithPlottable(this)) - return mParentPlot->legend->removeItem(lip); - else - return false; -} - -/* inherits documentation from base class */ -QRect QCPAbstractPlottable::clipRect() const -{ - return mKeyAxis->axisRect() | mValueAxis->axisRect(); -} - -/*! \internal - - Convenience function for transforming a key/value pair to pixels on the QCustomPlot surface, - taking the orientations of the axes associated with this plottable into account (e.g. whether key - represents x or y). - - \a key and \a value are transformed to the coodinates in pixels and are written to \a x and \a y. - - \see pixelsToCoords, QCPAxis::coordToPixel -*/ -void QCPAbstractPlottable::coordsToPixels(double key, double value, double &x, double &y) const -{ - if (mKeyAxis->orientation() == Qt::Horizontal) - { - x = mKeyAxis->coordToPixel(key); - y = mValueAxis->coordToPixel(value); - } else - { - y = mKeyAxis->coordToPixel(key); - x = mValueAxis->coordToPixel(value); - } -} - -/*! \internal - \overload - - Returns the input as pixel coordinates in a QPointF. -*/ -const QPointF QCPAbstractPlottable::coordsToPixels(double key, double value) const -{ - if (mKeyAxis->orientation() == Qt::Horizontal) - return QPointF(mKeyAxis->coordToPixel(key), mValueAxis->coordToPixel(value)); - else - return QPointF(mValueAxis->coordToPixel(value), mKeyAxis->coordToPixel(key)); -} - -/*! \internal - - Convenience function for transforming a x/y pixel pair on the QCustomPlot surface to plot coordinates, - taking the orientations of the axes associated with this plottable into account (e.g. whether key - represents x or y). - - \a x and \a y are transformed to the plot coodinates and are written to \a key and \a value. - - \see coordsToPixels, QCPAxis::coordToPixel -*/ -void QCPAbstractPlottable::pixelsToCoords(double x, double y, double &key, double &value) const -{ - if (mKeyAxis->orientation() == Qt::Horizontal) - { - key = mKeyAxis->pixelToCoord(x); - value = mValueAxis->pixelToCoord(y); - } else - { - key = mKeyAxis->pixelToCoord(y); - value = mValueAxis->pixelToCoord(x); - } -} - -/*! \internal - \overload - - Returns the pixel input \a pixelPos as plot coordinates \a key and \a value. -*/ -void QCPAbstractPlottable::pixelsToCoords(const QPointF &pixelPos, double &key, double &value) const -{ - pixelsToCoords(pixelPos.x(), pixelPos.y(), key, value); -} - -/*! \internal - - Returns the pen that should be used for drawing lines of the plottable. Returns mPen when the - graph is not selected and mSelectedPen when it is. -*/ -QPen QCPAbstractPlottable::mainPen() const -{ - return mSelected ? mSelectedPen : mPen; -} - -/*! \internal - - Returns the brush that should be used for drawing fills of the plottable. Returns mBrush when the - graph is not selected and mSelectedBrush when it is. -*/ -QBrush QCPAbstractPlottable::mainBrush() const -{ - return mSelected ? mSelectedBrush : mBrush; -} - -/*! \internal - - A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter - before drawing plottable lines. - - This is the antialiasing state the painter passed to the \ref draw method is in by default. - - This function takes into account the local setting of the antialiasing flag as well as - the overrides set e.g. with \ref QCustomPlot::setNotAntialiasedElements. - - \see setAntialiased, applyFillAntialiasingHint, applyScattersAntialiasingHint, applyErrorBarsAntialiasingHint -*/ -void QCPAbstractPlottable::applyDefaultAntialiasingHint(QCPPainter *painter) const -{ - applyAntialiasingHint(painter, mAntialiased, QCP::aePlottables); -} - -/*! \internal - - A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter - before drawing plottable fills. - - This function takes into account the local setting of the fill antialiasing flag as well as - the overrides set e.g. with \ref QCustomPlot::setNotAntialiasedElements. - - \see setAntialiased, applyDefaultAntialiasingHint, applyScattersAntialiasingHint, applyErrorBarsAntialiasingHint -*/ -void QCPAbstractPlottable::applyFillAntialiasingHint(QCPPainter *painter) const -{ - applyAntialiasingHint(painter, mAntialiasedFill, QCP::aeFills); -} - -/*! \internal - - A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter - before drawing plottable scatter points. - - This function takes into account the local setting of the scatters antialiasing flag as well as - the overrides set e.g. with \ref QCustomPlot::setNotAntialiasedElements. - - \see setAntialiased, applyFillAntialiasingHint, applyDefaultAntialiasingHint, applyErrorBarsAntialiasingHint -*/ -void QCPAbstractPlottable::applyScattersAntialiasingHint(QCPPainter *painter) const -{ - applyAntialiasingHint(painter, mAntialiasedScatters, QCP::aeScatters); -} - -/*! \internal - - A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter - before drawing plottable error bars. - - This function takes into account the local setting of the error bars antialiasing flag as well as - the overrides set e.g. with \ref QCustomPlot::setNotAntialiasedElements. - - \see setAntialiased, applyFillAntialiasingHint, applyScattersAntialiasingHint, applyDefaultAntialiasingHint -*/ -void QCPAbstractPlottable::applyErrorBarsAntialiasingHint(QCPPainter *painter) const -{ - applyAntialiasingHint(painter, mAntialiasedErrorBars, QCP::aeErrorBars); -} - -/*! \internal - - Finds the shortest squared distance of \a point to the line segment defined by \a start and \a - end. - - This function may be used to help with the implementation of the \ref selectTest function for - specific plottables. - - \note This function is identical to QCPAbstractItem::distSqrToLine -*/ -double QCPAbstractPlottable::distSqrToLine(const QPointF &start, const QPointF &end, const QPointF &point) const -{ - QVector2D a(start); - QVector2D b(end); - QVector2D p(point); - QVector2D v(b-a); - - double vLengthSqr = v.lengthSquared(); - if (!qFuzzyIsNull(vLengthSqr)) - { - double mu = QVector2D::dotProduct(p-a, v)/vLengthSqr; - if (mu < 0) - return (a-p).lengthSquared(); - else if (mu > 1) - return (b-p).lengthSquared(); - else - return ((a + mu*v)-p).lengthSquared(); - } else - return (a-p).lengthSquared(); -} - - -// ================================================================================ -// =================== QCPAbstractLegendItem -// ================================================================================ - -/*! \class QCPAbstractLegendItem - \brief The abstract base class for all items in a QCPLegend. - - It defines a very basic interface to items in a QCPLegend. For representing plottables in the - legend, the subclass QCPPlottableLegendItem is more suitable. - - Only derive directly from this class when you need absolute freedom (i.e. a legend item that's - not associated with a plottable). - - You must implement the following pure virtual functions: - \li \ref draw - \li \ref size - - You inherit the following members you may use: - - - - - - - - -
    QCPLegend *\b mParentLegendA pointer to the parent QCPLegend.
    QFont \b mFontThe generic font of the item. You should use this font for all or at least the most prominent text of the item.
    -*/ - -/* start documentation of pure virtual functions */ - -/*! \fn void QCPAbstractLegendItem::draw(QCPPainter *painter, const QRect &rect) const = 0; - - Draws this legend item with \a painter inside the specified \a rect. The \a rect typically has - the size which was returned from a preceding \ref size call. -*/ - -/*! \fn QSize QCPAbstractLegendItem::size(const QSize &targetSize) const = 0; - - Returns the size this item occupies in the legend. The legend will adapt its layout with the help - of this function. If this legend item can have a variable width (e.g. auto-wrapping text), this - function tries to find a size with a width close to the width of \a targetSize. The height of \a - targetSize only may have meaning in specific sublasses. Typically, it's ignored. -*/ - -/* end documentation of pure virtual functions */ -/* start of documentation of signals */ - -/*! \fn void QCPAbstractLegendItem::selectionChanged(bool selected) - - This signal is emitted when the selection state of this legend item has changed, either by user interaction - or by a direct call to \ref setSelected. -*/ - -/* end of documentation of signals */ - -/*! - Constructs a QCPAbstractLegendItem and associates it with the QCPLegend \a parent. This does not - cause the item to be added to \a parent, so \ref QCPLegend::addItem must be called separately. -*/ -QCPAbstractLegendItem::QCPAbstractLegendItem(QCPLegend *parent) : - QObject(parent), - mParentLegend(parent), - mAntialiased(false), - mFont(parent->font()), - mTextColor(parent->textColor()), - mSelectedFont(parent->selectedFont()), - mSelectedTextColor(parent->selectedTextColor()), - mSelectable(true), - mSelected(false) -{ -} - -/*! - Sets whether this legend item is drawn antialiased or not. - - Note that this setting may be overridden by \ref QCustomPlot::setAntialiasedElements and \ref - QCustomPlot::setNotAntialiasedElements. -*/ -void QCPAbstractLegendItem::setAntialiased(bool enabled) -{ - mAntialiased = enabled; -} - -/*! - Sets the default font of this specific legend item to \a font. - - \see setTextColor, QCPLegend::setFont -*/ -void QCPAbstractLegendItem::setFont(const QFont &font) -{ - mFont = font; -} - -/*! - Sets the default text color of this specific legend item to \a color. - - \see setFont, QCPLegend::setTextColor -*/ -void QCPAbstractLegendItem::setTextColor(const QColor &color) -{ - mTextColor = color; -} - -/*! - When this legend item is selected, \a font is used to draw generic text, instead of the normal - font set with \ref setFont. - - \see setFont, QCPLegend::setSelectedFont -*/ -void QCPAbstractLegendItem::setSelectedFont(const QFont &font) -{ - mSelectedFont = font; -} - -/*! - When this legend item is selected, \a color is used to draw generic text, instead of the normal - color set with \ref setTextColor. - - \see setTextColor, QCPLegend::setSelectedTextColor -*/ -void QCPAbstractLegendItem::setSelectedTextColor(const QColor &color) -{ - mSelectedTextColor = color; -} - -/*! - Sets whether this specific legend item is selectable. - - \see setSelected, QCustomPlot::setInteractions -*/ -void QCPAbstractLegendItem::setSelectable(bool selectable) -{ - mSelectable = selectable; -} - -/*! - Sets whether this specific legend item is selected. The selection state of the parent QCPLegend - is updated correspondingly. - - It is possible to set the selection state of this item by calling this function directly, even if - setSelectable is set to false. - - \see setSelectable, QCustomPlot::setInteractions -*/ -void QCPAbstractLegendItem::setSelected(bool selected) -{ - if (mSelected != selected) - { - mSelected = selected; - emit selectionChanged(mSelected); - mParentLegend->updateSelectionState(); - } -} - -/*! \internal - - Sets the QPainter::Antialiasing render hint on the provided \a painter, depending on the \ref - setAntialiased state of this legend item as well as the overrides \ref - QCustomPlot::setAntialiasedElements and \ref QCustomPlot::setNotAntialiasedElements. -*/ -void QCPAbstractLegendItem::applyAntialiasingHint(QCPPainter *painter) const -{ - if (mParentLegend->mParentPlot->notAntialiasedElements().testFlag(QCP::aeLegendItems)) - painter->setAntialiasing(false); - else if (mParentLegend->mParentPlot->antialiasedElements().testFlag(QCP::aeLegendItems)) - painter->setAntialiasing(true); - else - painter->setAntialiasing(mAntialiased); -} - - -// ================================================================================ -// =================== QCPPlottableLegendItem -// ================================================================================ -/*! \class QCPPlottableLegendItem - \brief A legend item representing a plottable with an icon and the plottable name. - - This is the standard legend item for plottables. It displays an icon of the plottable next to the - plottable name. The icon is drawn by the respective plottable itself (\ref - QCPAbstractPlottable::drawLegendIcon), and tries to give an intuitive symbol for the plottable. - For example, the QCPGraph draws a centered horizontal line with a single scatter point in the - middle and filling (if enabled) below. - - Legend items of this type are always associated with one plottable (retrievable via the - plottable() function and settable with the constructor). You may change the font of the plottable - name with \ref setFont. If \ref setTextWrap is set to true, the plottable name will wrap at the - right legend boundary (see \ref QCPLegend::setMinimumSize). Icon padding and border pen is taken - from the parent QCPLegend, see \ref QCPLegend::setIconBorderPen and \ref - QCPLegend::setIconTextPadding. - - The function \ref QCPAbstractPlottable::addToLegend/\ref QCPAbstractPlottable::removeFromLegend - creates/removes legend items of this type in the default implementation. However, these functions - may be reimplemented such that a different kind of legend item (e.g a direct subclass of - QCPAbstractLegendItem) is used for that plottable. -*/ - -/*! - Creates a new legend item associated with \a plottable. - - Once it's created, it can be added to the legend via \ref QCPLegend::addItem. - - A more convenient way of adding/removing a plottable to/from the legend is via the functions \ref - QCPAbstractPlottable::addToLegend and \ref QCPAbstractPlottable::removeFromLegend. -*/ -QCPPlottableLegendItem::QCPPlottableLegendItem(QCPLegend *parent, QCPAbstractPlottable *plottable) : - QCPAbstractLegendItem(parent), - mPlottable(plottable), - mTextWrap(false) -{ -} - -/*! - Sets whether the text of the legend item is wrapped at word boundaries to fit the with of the - legend. - - To prevent the legend autoSize feature (QCPLegend::setAutoSize) from compressing the text too - strong by wrapping it very often, set an appropriate minimum width with - QCPLegend::setMinimumSize. -*/ -void QCPPlottableLegendItem::setTextWrap(bool wrap) -{ - mTextWrap = wrap; -} - -/*! \internal - - Returns the pen that shall be used to draw the icon border, taking into account the selection - state of this item. -*/ -QPen QCPPlottableLegendItem::getIconBorderPen() const -{ - return mSelected ? mParentLegend->selectedIconBorderPen() : mParentLegend->iconBorderPen(); -} - -/*! \internal - - Returns the text color that shall be used to draw text, taking into account the selection state - of this item. -*/ -QColor QCPPlottableLegendItem::getTextColor() const -{ - return mSelected ? mSelectedTextColor : mTextColor; -} - -/*! \internal - - Returns the font that shall be used to draw text, taking into account the selection state of this - item. -*/ -QFont QCPPlottableLegendItem::getFont() const -{ - return mSelected ? mSelectedFont : mFont; -} - -/*! \internal - - Draws the item with \a painter into \a rect. - - The width of the passed rect is used as text wrapping width, when \ref setTextWrap is enabled. - The height is ignored. The rect is not used as a clipping rect (overpainting is not prevented - inside this function), so you should set an appropriate clipping rect on the painter before - calling this function. Ideally, the width of the rect should be the result of a preceding call to - \ref size. -*/ -void QCPPlottableLegendItem::draw(QCPPainter *painter, const QRect &rect) const -{ - if (!mPlottable) return; - painter->setFont(getFont()); - painter->setPen(QPen(getTextColor())); - int iconTextPadding = mParentLegend->iconTextPadding(); - QSize iconSize = mParentLegend->iconSize(); - QRect textRect; - QRect iconRect(rect.topLeft(), iconSize); - if (mTextWrap) - { - // take width from rect since our text should wrap there (only icon must fit at least): - textRect = painter->fontMetrics().boundingRect(0, 0, rect.width()-iconTextPadding-iconSize.width(), rect.height(), Qt::TextDontClip | Qt::TextWordWrap, mPlottable->name()); - if (textRect.height() < iconSize.height()) // text smaller than icon, center text vertically in icon height - { - painter->drawText(rect.x()+iconSize.width()+iconTextPadding, rect.y(), rect.width()-iconTextPadding-iconSize.width(), iconSize.height(), Qt::TextDontClip | Qt::TextWordWrap, mPlottable->name()); - } else // text bigger than icon, position top of text with top of icon - { - painter->drawText(rect.x()+iconSize.width()+iconTextPadding, rect.y(), rect.width()-iconTextPadding-iconSize.width(), textRect.height(), Qt::TextDontClip | Qt::TextWordWrap, mPlottable->name()); - } - } else - { - // text can't wrap (except with explicit newlines), center at current item size (icon size) - textRect = painter->fontMetrics().boundingRect(0, 0, 0, rect.height(), Qt::TextDontClip, mPlottable->name()); - if (textRect.height() < iconSize.height()) // text smaller than icon, center text vertically in icon height - { - painter->drawText(rect.x()+iconSize.width()+iconTextPadding, rect.y(), rect.width(), iconSize.height(), Qt::TextDontClip, mPlottable->name()); - } else // text bigger than icon, position top of text with top of icon - { - painter->drawText(rect.x()+iconSize.width()+iconTextPadding, rect.y(), rect.width(), textRect.height(), Qt::TextDontClip, mPlottable->name()); - } - } - // draw icon: - painter->save(); - painter->setClipRect(iconRect, Qt::IntersectClip); - mPlottable->drawLegendIcon(painter, iconRect); - painter->restore(); - // draw icon border: - if (getIconBorderPen().style() != Qt::NoPen) - { - painter->setPen(getIconBorderPen()); - painter->setBrush(Qt::NoBrush); - painter->drawRect(iconRect); - } -} - -/*! \internal - - Calculates and returns the size of this item. If \ref setTextWrap is enabled, the width of \a - targetSize will be used as the text wrapping width. This does not guarantee, that the width of - the returned QSize is the same as the width of \a targetSize, since wrapping occurs only at word - boundaries. So a single word that extends beyond the width of \a targetSize, will stretch the - returned QSize accordingly. - - The height of \a targetSize is ignored. The height of the returned QSize is either the height - of the icon or the height of the text bounding box, whichever is larger. -*/ -QSize QCPPlottableLegendItem::size(const QSize &targetSize) const -{ - if (!mPlottable) return QSize(); - QSize result(0, 0); - QRect textRect; - QFontMetrics fontMetrics(getFont()); - int iconTextPadding = mParentLegend->iconTextPadding(); - QSize iconSize = mParentLegend->iconSize(); - if (mTextWrap) - { - // take width from targetSize since our text can wrap (Only icon must fit at least): - textRect = fontMetrics.boundingRect(0, 0, targetSize.width()-iconTextPadding-iconSize.width(), iconSize.height(), Qt::TextDontClip | Qt::TextWordWrap, mPlottable->name()); - } else - { - // text can't wrap (except with explicit newlines), center at current item size (icon size) - textRect = fontMetrics.boundingRect(0, 0, 0, iconSize.height(), Qt::TextDontClip, mPlottable->name()); - } - result.setWidth(iconSize.width() + mParentLegend->iconTextPadding() + textRect.width()); - result.setHeight(qMax(textRect.height(), iconSize.height())); - return result; -} - -// ================================================================================ -// =================== QCPCurve -// ================================================================================ -/*! \class QCPCurve - \brief A plottable representing a parametric curve in a plot. - - To plot data, assign it with the \ref setData or \ref addData functions. - - \section appearance Changing the appearance - - The appearance of the curve is determined by the pen and the brush (\ref setPen, \ref setBrush). - \section usage Usage - - Like all data representing objects in QCustomPlot, the QCPCurve is a plottable (QCPAbstractPlottable). So - the plottable-interface of QCustomPlot applies (QCustomPlot::plottable, QCustomPlot::addPlottable, QCustomPlot::removePlottable, etc.) - - Usually, you first create an instance: - \code - QCPCurve *newCurve = new QCPCurve(customPlot->xAxis, customPlot->yAxis);\endcode - add it to the customPlot with QCustomPlot::addPlottable: - \code - customPlot->addPlottable(newCurve);\endcode - and then modify the properties of the newly created plottable, e.g.: - \code - newCurve->setName("Fermat's Spiral"); - newCurve->setData(tData, xData, yData);\endcode -*/ - -/*! - Constructs a curve which uses \a keyAxis as its key axis ("x") and \a valueAxis as its value - axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance and not have - the same orientation. If either of these restrictions is violated, a corresponding message is - printed to the debug output (qDebug), the construction is not aborted, though. - - The constructed QCPCurve can be added to the plot with QCustomPlot::addPlottable, QCustomPlot - then takes ownership of the graph. -*/ -QCPCurve::QCPCurve(QCPAxis *keyAxis, QCPAxis *valueAxis) : - QCPAbstractPlottable(keyAxis, valueAxis) -{ - mData = new QCPCurveDataMap; - mPen.setColor(Qt::blue); - mPen.setStyle(Qt::SolidLine); - mBrush.setColor(Qt::blue); - mBrush.setStyle(Qt::NoBrush); - mSelectedPen = mPen; - mSelectedPen.setWidthF(2.5); - mSelectedPen.setColor(QColor(80, 80, 255)); // lighter than Qt::blue of mPen - mSelectedBrush = mBrush; - - setScatterSize(6); - setScatterStyle(QCP::ssNone); - setLineStyle(lsLine); -} - -QCPCurve::~QCPCurve() -{ - delete mData; -} - -/*! - Replaces the current data with the provided \a data. - - If \a copy is set to true, data points in \a data will only be copied. if false, the plottable - takes ownership of the passed data and replaces the internal data pointer with it. This is - significantly faster than copying for large datasets. -*/ -void QCPCurve::setData(QCPCurveDataMap *data, bool copy) -{ - if (copy) - { - *mData = *data; - } else - { - delete mData; - mData = data; - } -} - -/*! \overload - - Replaces the current data with the provided points in \a t, \a key and \a value tuples. The - provided vectors should have equal length. Else, the number of added points will be the size of - the smallest vector. -*/ -void QCPCurve::setData(const QVector &t, const QVector &key, const QVector &value) -{ - mData->clear(); - int n = t.size(); - n = qMin(n, key.size()); - n = qMin(n, value.size()); - QCPCurveData newData; - for (int i=0; iinsertMulti(newData.t, newData); - } -} - -/*! \overload - - Replaces the current data with the provided \a key and \a value pairs. The t parameter - of each data point will be set to the integer index of the respective key/value pair. -*/ -void QCPCurve::setData(const QVector &key, const QVector &value) -{ - mData->clear(); - int n = key.size(); - n = qMin(n, value.size()); - QCPCurveData newData; - for (int i=0; iinsertMulti(newData.t, newData); - } -} - -/*! - Sets the visual appearance of single data points in the plot. If set to \ref QCP::ssNone, no scatter points - are drawn (e.g. for line-only-plots with appropriate line style). - \see ScatterStyle, setLineStyle -*/ -void QCPCurve::setScatterStyle(QCP::ScatterStyle style) -{ - mScatterStyle = style; -} - -/*! - This defines how big (in pixels) single scatters are drawn, if scatter style (\ref - setScatterStyle) isn't \ref QCP::ssNone, \ref QCP::ssDot or \ref QCP::ssPixmap. Floating point values are - allowed for fine grained control over optical appearance with antialiased painting. - - \see ScatterStyle -*/ -void QCPCurve::setScatterSize(double size) -{ - mScatterSize = size; -} - -/*! - If the scatter style (\ref setScatterStyle) is set to ssPixmap, this function defines the QPixmap - that will be drawn centered on the data point coordinate. - - \see ScatterStyle -*/ -void QCPCurve::setScatterPixmap(const QPixmap &pixmap) -{ - mScatterPixmap = pixmap; -} - -/*! - Sets how the single data points are connected in the plot or how they are represented visually - apart from the scatter symbol. For scatter-only plots, set \a style to \ref lsNone and \ref - setScatterStyle to the desired scatter style. - - \see setScatterStyle -*/ -void QCPCurve::setLineStyle(QCPCurve::LineStyle style) -{ - mLineStyle = style; -} - -/*! - Adds the provided data points in \a dataMap to the current data. - \see removeData -*/ -void QCPCurve::addData(const QCPCurveDataMap &dataMap) -{ - mData->unite(dataMap); -} - -/*! \overload - Adds the provided single data point in \a data to the current data. - \see removeData -*/ -void QCPCurve::addData(const QCPCurveData &data) -{ - mData->insertMulti(data.t, data); -} - -/*! \overload - Adds the provided single data point as \a t, \a key and \a value tuple to the current data - \see removeData -*/ -void QCPCurve::addData(double t, double key, double value) -{ - QCPCurveData newData; - newData.t = t; - newData.key = key; - newData.value = value; - mData->insertMulti(newData.t, newData); -} - -/*! \overload - - Adds the provided single data point as \a key and \a value pair to the current data The t - parameter of the data point is set to the t of the last data point plus 1. If there is no last - data point, t will be set to 0. - - \see removeData -*/ -void QCPCurve::addData(double key, double value) -{ - QCPCurveData newData; - if (!mData->isEmpty()) - newData.t = (mData->constEnd()-1).key()+1; - else - newData.t = 0; - newData.key = key; - newData.value = value; - mData->insertMulti(newData.t, newData); -} - -/*! \overload - Adds the provided data points as \a t, \a key and \a value tuples to the current data. - \see removeData -*/ -void QCPCurve::addData(const QVector &ts, const QVector &keys, const QVector &values) -{ - int n = ts.size(); - n = qMin(n, keys.size()); - n = qMin(n, values.size()); - QCPCurveData newData; - for (int i=0; iinsertMulti(newData.t, newData); - } -} - -/*! - Removes all data points with curve parameter t smaller than \a t. - \see addData, clearData -*/ -void QCPCurve::removeDataBefore(double t) -{ - QCPCurveDataMap::iterator it = mData->begin(); - while (it != mData->end() && it.key() < t) - it = mData->erase(it); -} - -/*! - Removes all data points with curve parameter t greater than \a t. - \see addData, clearData -*/ -void QCPCurve::removeDataAfter(double t) -{ - if (mData->isEmpty()) return; - QCPCurveDataMap::iterator it = mData->upperBound(t); - while (it != mData->end()) - it = mData->erase(it); -} - -/*! - Removes all data points with curve parameter t between \a fromt and \a tot. if \a fromt is - greater or equal to \a tot, the function does nothing. To remove a single data point with known - t, use \ref removeData(double t). - - \see addData, clearData -*/ -void QCPCurve::removeData(double fromt, double tot) -{ - if (fromt >= tot || mData->isEmpty()) return; - QCPCurveDataMap::iterator it = mData->upperBound(fromt); - QCPCurveDataMap::iterator itEnd = mData->upperBound(tot); - while (it != itEnd) - it = mData->erase(it); -} - -/*! \overload - - Removes a single data point at curve parameter \a t. If the position is not known with absolute - precision, consider using \ref removeData(double fromt, double tot) with a small fuzziness - interval around the suspected position, depeding on the precision with which the curve parameter - is known. - - \see addData, clearData -*/ -void QCPCurve::removeData(double t) -{ - mData->remove(t); -} - -/*! - Removes all data points. - \see removeData, removeDataAfter, removeDataBefore -*/ -void QCPCurve::clearData() -{ - mData->clear(); -} - -/* inherits documentation from base class */ -double QCPCurve::selectTest(const QPointF &pos) const -{ - if (mData->isEmpty() || !mVisible) - return -1; - - return pointDistance(pos); -} - -/* inherits documentation from base class */ -void QCPCurve::draw(QCPPainter *painter) -{ - if (mData->isEmpty()) return; - - // allocate line vector: - QVector *lineData = new QVector; - // fill with curve data: - getCurveData(lineData); - // draw curve fill: - if (mainBrush().style() != Qt::NoBrush && mainBrush().color().alpha() != 0) - { - applyFillAntialiasingHint(painter); - painter->setPen(Qt::NoPen); - painter->setBrush(mainBrush()); - painter->drawPolygon(QPolygonF(*lineData)); - } - // draw curve line: - if (mLineStyle != lsNone && mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0) - { - applyDefaultAntialiasingHint(painter); - painter->setPen(mainPen()); - painter->setBrush(Qt::NoBrush); - // if drawing solid line and not in PDF, use much faster line drawing instead of polyline: - if (mParentPlot->plottingHints().testFlag(QCP::phFastPolylines) && - painter->pen().style() == Qt::SolidLine && - !painter->pdfExportMode()) - { - for (int i=1; isize(); ++i) - painter->drawLine(lineData->at(i-1), lineData->at(i)); - } else - { - painter->drawPolyline(QPolygonF(*lineData)); - } - } - // draw scatters: - if (mScatterStyle != QCP::ssNone) - drawScatterPlot(painter, lineData); - // free allocated line data: - delete lineData; -} - -/* inherits documentation from base class */ -void QCPCurve::drawLegendIcon(QCPPainter *painter, const QRect &rect) const -{ - // draw fill: - if (mBrush.style() != Qt::NoBrush) - { - applyFillAntialiasingHint(painter); - painter->fillRect(QRectF(rect.left(), rect.top()+rect.height()/2.0, rect.width(), rect.height()/3.0), mBrush); - } - // draw line vertically centered: - if (mLineStyle != lsNone) - { - applyDefaultAntialiasingHint(painter); - painter->setPen(mPen); - painter->drawLine(QLineF(rect.left(), rect.top()+rect.height()/2.0, rect.right()+5, rect.top()+rect.height()/2.0)); // +5 on x2 else last segment is missing from dashed/dotted pens - } - // draw scatter symbol: - if (mScatterStyle != QCP::ssNone) - { - if (mScatterStyle == QCP::ssPixmap && (mScatterPixmap.size().width() > rect.width() || mScatterPixmap.size().height() > rect.height())) - { - // handle pixmap scatters that are larger than legend icon rect separately. - // We resize them and draw them manually, instead of calling drawScatter: - QSize newSize = mScatterPixmap.size(); - newSize.scale(rect.size(), Qt::KeepAspectRatio); - QRect targetRect; - targetRect.setSize(newSize); - targetRect.moveCenter(rect.center()); - bool smoothBackup = painter->testRenderHint(QPainter::SmoothPixmapTransform); - painter->setRenderHint(QPainter::SmoothPixmapTransform, true); - painter->drawPixmap(targetRect, mScatterPixmap); - painter->setRenderHint(QPainter::SmoothPixmapTransform, smoothBackup); - } else - { - applyScattersAntialiasingHint(painter); - painter->setPen(mPen); - painter->drawScatter(QRectF(rect).center().x(), QRectF(rect).center().y(), mScatterSize, mScatterStyle); - } - } -} - -/*! \internal - - Draws scatter symbols at every data point passed in \a pointData. scatter symbols are independent of - the line style and are always drawn if scatter style is not \ref QCP::ssNone. -*/ -void QCPCurve::drawScatterPlot(QCPPainter *painter, const QVector *pointData) const -{ - // draw scatter point symbols: - applyScattersAntialiasingHint(painter); - painter->setPen(mainPen()); - painter->setBrush(mainBrush()); - painter->setScatterPixmap(mScatterPixmap); - for (int i=0; isize(); ++i) - painter->drawScatter(pointData->at(i).x(), pointData->at(i).y(), mScatterSize, mScatterStyle); -} - -/*! \internal - - called by QCPCurve::draw to generate a point vector (pixels) which represents the line of the - curve. Line segments that aren't visible in the current axis rect are handled in an optimized - way. -*/ -void QCPCurve::getCurveData(QVector *lineData) const -{ - /* Extended sides of axis rect R divide space into 9 regions: - 1__|_4_|__7 - 2__|_R_|__8 - 3 | 6 | 9 - General idea: If the two points of a line segment are in the same region (that is not R), the line segment corner is removed. - Curves outside R become straight lines closely outside of R which greatly reduces drawing time, yet keeps the look of lines and - fills inside R consistent. - The region R has index 5. - */ - lineData->reserve(mData->size()); - QCPCurveDataMap::const_iterator it; - int lastRegion = 5; - int currentRegion = 5; - double RLeft = mKeyAxis->range().lower; - double RRight = mKeyAxis->range().upper; - double RBottom = mValueAxis->range().lower; - double RTop = mValueAxis->range().upper; - double x, y; // current key/value - bool addedLastAlready = true; - bool firstPoint = true; // first point must always be drawn, to make sure fill works correctly - for (it = mData->constBegin(); it != mData->constEnd(); ++it) - { - x = it.value().key; - y = it.value().value; - // determine current region: - if (x < RLeft) // region 123 - { - if (y > RTop) - currentRegion = 1; - else if (y < RBottom) - currentRegion = 3; - else - currentRegion = 2; - } else if (x > RRight) // region 789 - { - if (y > RTop) - currentRegion = 7; - else if (y < RBottom) - currentRegion = 9; - else - currentRegion = 8; - } else // region 456 - { - if (y > RTop) - currentRegion = 4; - else if (y < RBottom) - currentRegion = 6; - else - currentRegion = 5; - } - - /* - Watch out, the next part is very tricky. It modifies the curve such that it seems like the - whole thing is still drawn, but actually the points outside the axisRect are simplified - ("optimized") greatly. There are some subtle special cases when line segments are large and - thereby each subsequent point may be in a different region or even skip some. - */ - // determine whether to keep current point: - if (currentRegion == 5 || (firstPoint && mBrush.style() != Qt::NoBrush)) // current is in R, add current and last if it wasn't added already - { - if (!addedLastAlready) // in case curve just entered R, make sure the last point outside R is also drawn correctly - lineData->append(coordsToPixels((it-1).value().key, (it-1).value().value)); // add last point to vector - else if (lastRegion != 5) // added last already. If that's the case, we probably added it at optimized position. So go back and make sure it's at original position (else the angle changes under which this segment enters R) - { - if (!firstPoint) // because on firstPoint, currentRegion is 5 and addedLastAlready is true, although there is no last point - lineData->replace(lineData->size()-1, coordsToPixels((it-1).value().key, (it-1).value().value)); - } - lineData->append(coordsToPixels(it.value().key, it.value().value)); // add current point to vector - addedLastAlready = true; // so in next iteration, we don't add this point twice - } else if (currentRegion != lastRegion) // changed region, add current and last if not added already - { - // using outsideCoordsToPixels instead of coorsToPixels for optimized point placement (places points just outside axisRect instead of potentially far away) - - // if we're coming from R or we skip diagonally over the corner regions (so line might still be visible in R), we can't place points optimized - if (lastRegion == 5 || // coming from R - ((lastRegion==2 && currentRegion==4) || (lastRegion==4 && currentRegion==2)) || // skip top left diagonal - ((lastRegion==4 && currentRegion==8) || (lastRegion==8 && currentRegion==4)) || // skip top right diagonal - ((lastRegion==8 && currentRegion==6) || (lastRegion==6 && currentRegion==8)) || // skip bottom right diagonal - ((lastRegion==6 && currentRegion==2) || (lastRegion==2 && currentRegion==6)) // skip bottom left diagonal - ) - { - // always add last point if not added already, original: - if (!addedLastAlready) - lineData->append(coordsToPixels((it-1).value().key, (it-1).value().value)); - // add current point, original: - lineData->append(coordsToPixels(it.value().key, it.value().value)); - } else // no special case that forbids optimized point placement, so do it: - { - // always add last point if not added already, optimized: - if (!addedLastAlready) - lineData->append(outsideCoordsToPixels((it-1).value().key, (it-1).value().value, currentRegion)); - // add current point, optimized: - lineData->append(outsideCoordsToPixels(it.value().key, it.value().value, currentRegion)); - } - addedLastAlready = true; // so that if next point enters 5, or crosses another region boundary, we don't add this point twice - } else // neither in R, nor crossed a region boundary, skip current point - { - addedLastAlready = false; - } - lastRegion = currentRegion; - firstPoint = false; - } - // If curve ends outside R, we want to add very last point so the fill looks like it should when the curve started inside R: - if (lastRegion != 5 && mBrush.style() != Qt::NoBrush && !mData->isEmpty()) - lineData->append(coordsToPixels((mData->constEnd()-1).value().key, (mData->constEnd()-1).value().value)); -} - -/*! \internal - - Calculates the (minimum) distance (in pixels) the curve's representation has from the given \a - pixelPoint in pixels. This is used to determine whether the curve was clicked or not, e.g. in - \ref selectTest. -*/ -double QCPCurve::pointDistance(const QPointF &pixelPoint) const -{ - if (mData->isEmpty()) - { - qDebug() << Q_FUNC_INFO << "requested point distance on curve" << mName << "without data"; - return 500; - } - if (mData->size() == 1) - { - QPointF dataPoint = coordsToPixels(mData->constBegin().key(), mData->constBegin().value().value); - return QVector2D(dataPoint-pixelPoint).length(); - } - - // calculate minimum distance to line segments: - QVector *lineData = new QVector; - getCurveData(lineData); - double minDistSqr = std::numeric_limits::max(); - for (int i=0; isize()-1; ++i) - { - double currentDistSqr = distSqrToLine(lineData->at(i), lineData->at(i+1), pixelPoint); - if (currentDistSqr < minDistSqr) - minDistSqr = currentDistSqr; - } - delete lineData; - return sqrt(minDistSqr); -} - -/*! \internal - - This is a specialized \ref coordsToPixels function for points that are outside the visible - axisRect and just crossing a boundary (since \ref getCurveData reduces non-visible curve segments - to those line segments that cross region boundaries, see documentation there). It only uses the - coordinate parallel to the region boundary of the axisRect. The other coordinate is picked 10 - pixels outside the axisRect. Together with the optimization in \ref getCurveData this improves - performance for large curves (or zoomed in ones) significantly while keeping the illusion the - whole curve and its filling is still being drawn for the viewer. -*/ -QPointF QCPCurve::outsideCoordsToPixels(double key, double value, int region) const -{ - int margin = 10; - QRect axisRect = mKeyAxis->axisRect() | mValueAxis->axisRect(); - QPointF result = coordsToPixels(key, value); - switch (region) - { - case 2: result.setX(axisRect.left()-margin); break; // left - case 8: result.setX(axisRect.right()+margin); break; // right - case 4: result.setY(axisRect.top()-margin); break; // top - case 6: result.setY(axisRect.bottom()+margin); break; // bottom - case 1: result.setX(axisRect.left()-margin); - result.setY(axisRect.top()-margin); break; // top left - case 7: result.setX(axisRect.right()+margin); - result.setY(axisRect.top()-margin); break; // top right - case 9: result.setX(axisRect.right()+margin); - result.setY(axisRect.bottom()+margin); break; // bottom right - case 3: result.setX(axisRect.left()-margin); - result.setY(axisRect.bottom()+margin); break; // bottom left - } - return result; -} - -/* inherits documentation from base class */ -QCPRange QCPCurve::getKeyRange(bool &validRange, SignDomain inSignDomain) const -{ - QCPRange range; - bool haveLower = false; - bool haveUpper = false; - - double current; - - QCPCurveDataMap::const_iterator it = mData->constBegin(); - while (it != mData->constEnd()) - { - current = it.value().key; - if (inSignDomain == sdBoth || (inSignDomain == sdNegative && current < 0) || (inSignDomain == sdPositive && current > 0)) - { - if (current < range.lower || !haveLower) - { - range.lower = current; - haveLower = true; - } - if (current > range.upper || !haveUpper) - { - range.upper = current; - haveUpper = true; - } - } - ++it; - } - - validRange = haveLower && haveUpper; - return range; -} - -/* inherits documentation from base class */ -QCPRange QCPCurve::getValueRange(bool &validRange, SignDomain inSignDomain) const -{ - QCPRange range; - bool haveLower = false; - bool haveUpper = false; - - double current; - - QCPCurveDataMap::const_iterator it = mData->constBegin(); - while (it != mData->constEnd()) - { - current = it.value().value; - if (inSignDomain == sdBoth || (inSignDomain == sdNegative && current < 0) || (inSignDomain == sdPositive && current > 0)) - { - if (current < range.lower || !haveLower) - { - range.lower = current; - haveLower = true; - } - if (current > range.upper || !haveUpper) - { - range.upper = current; - haveUpper = true; - } - } - ++it; - } - - validRange = haveLower && haveUpper; - return range; -} - -// ================================================================================ -// =================== QCPBars -// ================================================================================ -/*! \class QCPBars - \brief A plottable representing a bar chart in a plot. - - To plot data, assign it with the \ref setData or \ref addData functions. - - \section appearance Changing the appearance - - The appearance of the bars is determined by the pen and the brush (\ref setPen, \ref setBrush). - - Bar charts are stackable. This means, Two QCPBars plottables can be placed on top of each other - (see \ref QCPBars::moveAbove). Then, when two bars are at the same key position, they will appear - stacked. - - \section usage Usage - - Like all data representing objects in QCustomPlot, the QCPBars is a plottable - (QCPAbstractPlottable). So the plottable-interface of QCustomPlot applies - (QCustomPlot::plottable, QCustomPlot::addPlottable, QCustomPlot::removePlottable, etc.) - - Usually, you first create an instance: - \code - QCPBars *newBars = new QCPBars(customPlot->xAxis, customPlot->yAxis);\endcode - add it to the customPlot with QCustomPlot::addPlottable: - \code - customPlot->addPlottable(newBars);\endcode - and then modify the properties of the newly created plottable, e.g.: - \code - newBars->setName("Country population"); - newBars->setData(xData, yData);\endcode -*/ - -/*! \fn QCPBars *QCPBars::barBelow() const - Returns the bars plottable that is directly below this bars plottable. - If there is no such plottable, returns 0. - - \see barAbove, moveBelow, moveAbove -*/ - -/*! \fn QCPBars *QCPBars::barAbove() const - Returns the bars plottable that is directly above this bars plottable. - If there is no such plottable, returns 0. - - \see barBelow, moveBelow, moveAbove -*/ - -/*! - Constructs a bar chart which uses \a keyAxis as its key axis ("x") and \a valueAxis as its value - axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance and not have - the same orientation. If either of these restrictions is violated, a corresponding message is - printed to the debug output (qDebug), the construction is not aborted, though. - - The constructed QCPBars can be added to the plot with QCustomPlot::addPlottable, QCustomPlot - then takes ownership of the bar chart. -*/ -QCPBars::QCPBars(QCPAxis *keyAxis, QCPAxis *valueAxis) : - QCPAbstractPlottable(keyAxis, valueAxis), - mBarBelow(0), - mBarAbove(0) -{ - mData = new QCPBarDataMap; - mPen.setColor(Qt::blue); - mPen.setStyle(Qt::SolidLine); - mBrush.setColor(QColor(40, 50, 255, 30)); - mBrush.setStyle(Qt::SolidPattern); - mSelectedPen = mPen; - mSelectedPen.setWidthF(2.5); - mSelectedPen.setColor(QColor(80, 80, 255)); // lighter than Qt::blue of mPen - mSelectedBrush = mBrush; - - mWidth = 0.75; -} - -QCPBars::~QCPBars() -{ - if (mBarBelow || mBarAbove) - connectBars(mBarBelow, mBarAbove); // take this bar out of any stacking - delete mData; -} - -/*! - Sets the width of the bars in plot (key) coordinates. -*/ -void QCPBars::setWidth(double width) -{ - mWidth = width; -} - -/*! - Replaces the current data with the provided \a data. - - If \a copy is set to true, data points in \a data will only be copied. if false, the plottable - takes ownership of the passed data and replaces the internal data pointer with it. This is - significantly faster than copying for large datasets. -*/ -void QCPBars::setData(QCPBarDataMap *data, bool copy) -{ - if (copy) - { - *mData = *data; - } else - { - delete mData; - mData = data; - } -} - -/*! \overload - - Replaces the current data with the provided points in \a key and \a value tuples. The - provided vectors should have equal length. Else, the number of added points will be the size of - the smallest vector. -*/ -void QCPBars::setData(const QVector &key, const QVector &value) -{ - mData->clear(); - int n = key.size(); - n = qMin(n, value.size()); - QCPBarData newData; - for (int i=0; iinsertMulti(newData.key, newData); - } -} - -/*! - Moves this bars plottable below \a bars. In other words, the bars of this plottable will appear - below the bars of \a bars. The move target \a bars must use the same key and value axis as this - plottable. - - Inserting into and removing from existing bar stacking is handled gracefully. If \a bars already - has a bars object below itself, this bars object is inserted between the two. If this bars object - is already between two other bars, the two other bars will be stacked on top of each other after - the operation. - - To remove this bars plottable from any stacking, set \a bars to 0. - - \see moveBelow, barAbove, barBelow -*/ -void QCPBars::moveBelow(QCPBars *bars) -{ - if (bars == this) return; - if (bars->keyAxis() != mKeyAxis || bars->valueAxis() != mValueAxis) - { - qDebug() << Q_FUNC_INFO << "passed QCPBars* doesn't have same key and value axis as this QCPBars"; - return; - } - // remove from stacking: - connectBars(mBarBelow, mBarAbove); // Note: also works if one (or both) of them is 0 - // if new bar given, insert this bar below it: - if (bars) - { - if (bars->mBarBelow) - connectBars(bars->mBarBelow, this); - connectBars(this, bars); - } -} - -/*! - Moves this bars plottable above \a bars. In other words, the bars of this plottable will appear - above the bars of \a bars. The move target \a bars must use the same key and value axis as this - plottable. - - Inserting into and removing from existing bar stacking is handled gracefully. If \a bars already - has a bars object below itself, this bars object is inserted between the two. If this bars object - is already between two other bars, the two other bars will be stacked on top of each other after - the operation. - - To remove this bars plottable from any stacking, set \a bars to 0. - - \see moveBelow, barBelow, barAbove -*/ -void QCPBars::moveAbove(QCPBars *bars) -{ - if (bars == this) return; - if (bars && (bars->keyAxis() != mKeyAxis || bars->valueAxis() != mValueAxis)) - { - qDebug() << Q_FUNC_INFO << "passed QCPBars* doesn't have same key and value axis as this QCPBars"; - return; - } - // remove from stacking: - connectBars(mBarBelow, mBarAbove); // Note: also works if one (or both) of them is 0 - // if new bar given, insert this bar above it: - if (bars) - { - if (bars->mBarAbove) - connectBars(this, bars->mBarAbove); - connectBars(bars, this); - } -} - -/*! - Adds the provided data points in \a dataMap to the current data. - \see removeData -*/ -void QCPBars::addData(const QCPBarDataMap &dataMap) -{ - mData->unite(dataMap); -} - -/*! \overload - Adds the provided single data point in \a data to the current data. - \see removeData -*/ -void QCPBars::addData(const QCPBarData &data) -{ - mData->insertMulti(data.key, data); -} - -/*! \overload - Adds the provided single data point as \a key and \a value tuple to the current data - \see removeData -*/ -void QCPBars::addData(double key, double value) -{ - QCPBarData newData; - newData.key = key; - newData.value = value; - mData->insertMulti(newData.key, newData); -} - -/*! \overload - Adds the provided data points as \a key and \a value tuples to the current data. - \see removeData -*/ -void QCPBars::addData(const QVector &keys, const QVector &values) -{ - int n = keys.size(); - n = qMin(n, values.size()); - QCPBarData newData; - for (int i=0; iinsertMulti(newData.key, newData); - } -} - -/*! - Removes all data points with key smaller than \a key. - \see addData, clearData -*/ -void QCPBars::removeDataBefore(double key) -{ - QCPBarDataMap::iterator it = mData->begin(); - while (it != mData->end() && it.key() < key) - it = mData->erase(it); -} - -/*! - Removes all data points with key greater than \a key. - \see addData, clearData -*/ -void QCPBars::removeDataAfter(double key) -{ - if (mData->isEmpty()) return; - QCPBarDataMap::iterator it = mData->upperBound(key); - while (it != mData->end()) - it = mData->erase(it); -} - -/*! - Removes all data points with key between \a fromKey and \a toKey. if \a fromKey is - greater or equal to \a toKey, the function does nothing. To remove a single data point with known - key, use \ref removeData(double key). - - \see addData, clearData -*/ -void QCPBars::removeData(double fromKey, double toKey) -{ - if (fromKey >= toKey || mData->isEmpty()) return; - QCPBarDataMap::iterator it = mData->upperBound(fromKey); - QCPBarDataMap::iterator itEnd = mData->upperBound(toKey); - while (it != itEnd) - it = mData->erase(it); -} - -/*! \overload - - Removes a single data point at \a key. If the position is not known with absolute precision, - consider using \ref removeData(double fromKey, double toKey) with a small fuzziness interval - around the suspected position, depeding on the precision with which the key is known. - - \see addData, clearData -*/ -void QCPBars::removeData(double key) -{ - mData->remove(key); -} - -/*! - Removes all data points. - \see removeData, removeDataAfter, removeDataBefore -*/ -void QCPBars::clearData() -{ - mData->clear(); -} - -/* inherits documentation from base class */ -double QCPBars::selectTest(const QPointF &pos) const -{ - QCPBarDataMap::ConstIterator it; - double posKey, posValue; - pixelsToCoords(pos, posKey, posValue); - for (it = mData->constBegin(); it != mData->constEnd(); ++it) - { - double baseValue = getBaseValue(it.key(), it.value().value >=0); - QCPRange keyRange(it.key()-mWidth*0.5, it.key()+mWidth*0.5); - QCPRange valueRange(baseValue, baseValue+it.value().value); - if (keyRange.contains(posKey) && valueRange.contains(posValue)) - return mParentPlot->selectionTolerance()*0.99; - } - return -1; -} - -/* inherits documentation from base class */ -void QCPBars::draw(QCPPainter *painter) -{ - if (mData->isEmpty()) return; - - QCPBarDataMap::const_iterator it; - for (it = mData->constBegin(); it != mData->constEnd(); ++it) - { - if (it.key()+mWidth*0.5 < mKeyAxis->range().lower || it.key()-mWidth*0.5 > mKeyAxis->range().upper) - continue; - QPolygonF barPolygon = getBarPolygon(it.key(), it.value().value); - // draw bar fill: - if (mainBrush().style() != Qt::NoBrush && mainBrush().color().alpha() != 0) - { - applyFillAntialiasingHint(painter); - painter->setPen(Qt::NoPen); - painter->setBrush(mainBrush()); - painter->drawPolygon(barPolygon); - } - // draw bar line: - if (mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0) - { - applyDefaultAntialiasingHint(painter); - painter->setPen(mainPen()); - painter->setBrush(Qt::NoBrush); - painter->drawPolyline(barPolygon); - } - } -} - -/* inherits documentation from base class */ -void QCPBars::drawLegendIcon(QCPPainter *painter, const QRect &rect) const -{ - // draw filled rect: - applyDefaultAntialiasingHint(painter); - painter->setBrush(mBrush); - painter->setPen(mPen); - QRectF r = QRectF(0, 0, rect.width()*0.67, rect.height()*0.67); - r.moveCenter(rect.center()); - painter->drawRect(r); -} - -/*! \internal - - Returns the polygon of a single bar with \a key and \a value. The Polygon is open at the bottom - and shifted according to the bar stacking (see \ref moveAbove). -*/ -QPolygonF QCPBars::getBarPolygon(double key, double value) const -{ - QPolygonF result; - double baseValue = getBaseValue(key, value >= 0); - result << coordsToPixels(key-mWidth*0.5, baseValue); - result << coordsToPixels(key-mWidth*0.5, baseValue+value); - result << coordsToPixels(key+mWidth*0.5, baseValue+value); - result << coordsToPixels(key+mWidth*0.5, baseValue); - return result; -} - -/*! \internal - - This function is called to find at which value to start drawing the base of a bar at \a key, when - it is stacked on top of another QCPBars (e.g. with \ref moveAbove). - - positive and negative bars are separated per stack (positive are stacked above 0-value upwards, - negative are stacked below 0-value downwards). This can be indicated with \a positive. So if the - bar for which we need the base value is negative, set \a positive to false. -*/ -double QCPBars::getBaseValue(double key, bool positive) const -{ - if (mBarBelow) - { - double max = 0; - // find bars of mBarBelow that are approximately at key and find largest one: - QCPBarDataMap::const_iterator it = mBarBelow->mData->lowerBound(key-mWidth*0.1); - QCPBarDataMap::const_iterator itEnd = mBarBelow->mData->upperBound(key+mWidth*0.1); - while (it != itEnd) - { - if ((positive && it.value().value > max) || - (!positive && it.value().value < max)) - max = it.value().value; - ++it; - } - // recurse down the bar-stack to find the total height: - return max + mBarBelow->getBaseValue(key, positive); - } else - return 0; -} - -/*! \internal - - Connects \a below and \a above to each other via their mBarAbove/mBarBelow properties. - The bar(s) currently below lower and upper will become disconnected to lower/upper. - - If lower is zero, upper will be disconnected at the bottom. - If upper is zero, lower will be disconnected at the top. -*/ -void QCPBars::connectBars(QCPBars *lower, QCPBars *upper) -{ - if (!lower && !upper) return; - - if (!lower) // disconnect upper at bottom - { - // disconnect old bar below upper: - if (upper->mBarBelow && upper->mBarBelow->mBarAbove == upper) - upper->mBarBelow->mBarAbove = 0; - upper->mBarBelow = 0; - } else if (!upper) // disconnect lower at top - { - // disconnect old bar above lower: - if (lower->mBarAbove && lower->mBarAbove->mBarBelow == lower) - lower->mBarAbove->mBarBelow = 0; - lower->mBarAbove = 0; - } else // connect lower and upper - { - // disconnect old bar above lower: - if (lower->mBarAbove && lower->mBarAbove->mBarBelow == lower) - lower->mBarAbove->mBarBelow = 0; - // disconnect old bar below upper: - if (upper->mBarBelow && upper->mBarBelow->mBarAbove == upper) - upper->mBarBelow->mBarAbove = 0; - lower->mBarAbove = upper; - upper->mBarBelow = lower; - } -} - -/* inherits documentation from base class */ -QCPRange QCPBars::getKeyRange(bool &validRange, SignDomain inSignDomain) const -{ - QCPRange range; - bool haveLower = false; - bool haveUpper = false; - - double current; - double barWidthHalf = mWidth*0.5; - QCPBarDataMap::const_iterator it = mData->constBegin(); - while (it != mData->constEnd()) - { - current = it.value().key; - if (inSignDomain == sdBoth || (inSignDomain == sdNegative && current+barWidthHalf < 0) || (inSignDomain == sdPositive && current-barWidthHalf > 0)) - { - if (current-barWidthHalf < range.lower || !haveLower) - { - range.lower = current-barWidthHalf; - haveLower = true; - } - if (current+barWidthHalf > range.upper || !haveUpper) - { - range.upper = current+barWidthHalf; - haveUpper = true; - } - } - ++it; - } - - validRange = haveLower && haveUpper; - return range; -} - -/* inherits documentation from base class */ -QCPRange QCPBars::getValueRange(bool &validRange, SignDomain inSignDomain) const -{ - QCPRange range; - bool haveLower = true; // set to true, because 0 should always be visible in bar charts - bool haveUpper = true; // set to true, because 0 should always be visible in bar charts - - double current; - - QCPBarDataMap::const_iterator it = mData->constBegin(); - while (it != mData->constEnd()) - { - current = it.value().value + getBaseValue(it.value().key, it.value().value >= 0); - if (inSignDomain == sdBoth || (inSignDomain == sdNegative && current < 0) || (inSignDomain == sdPositive && current > 0)) - { - if (current < range.lower || !haveLower) - { - range.lower = current; - haveLower = true; - } - if (current > range.upper || !haveUpper) - { - range.upper = current; - haveUpper = true; - } - } - ++it; - } - - validRange = range.lower < range.upper; - return range; -} - - -// ================================================================================ -// =================== QCPStatisticalBox -// ================================================================================ - -/*! \class QCPStatisticalBox - \brief A plottable representing a single statistical box in a plot. - - To plot data, assign it with the individual parameter functions or use \ref setData to set all - parameters at once. The individual funcions are: - \li \ref setMinimum - \li \ref setLowerQuartile - \li \ref setMedian - \li \ref setUpperQuartile - \li \ref setMaximum - - Additionally you can define a list of outliers, drawn as circle datapoints: - \li \ref setOutliers - - \section appearance Changing the appearance - - The appearance of the box itself is controlled via \ref setPen and \ref setBrush. You - may change the width of the box with \ref setWidth in plot coordinates (not pixels). - - Analog functions exist for the minimum/maximum-whiskers: \ref setWhiskerPen, \ref - setWhiskerBarPen, \ref setWhiskerWidth. The whisker width is the width of the bar at the top - (maximum) or bottom (minimum). - - The median indicator line has its own pen, \ref setMedianPen. - - If the pens are changed, especially the whisker pen, make sure to set the capStyle to - Qt::FlatCap. Else, e.g. the whisker line might exceed the bar line by a few pixels due to the pen - cap being not perfectly flat. - - The Outlier data points are drawn normal scatter points. Their look can be controlled with \ref - setOutlierStyle and \ref setOutlierPen. The size (diameter) can be set with \ref setOutlierSize - in pixels. - - \section usage Usage - - Like all data representing objects in QCustomPlot, the QCPStatisticalBox is a plottable - (QCPAbstractPlottable). So the plottable-interface of QCustomPlot applies - (QCustomPlot::plottable, QCustomPlot::addPlottable, QCustomPlot::removePlottable, etc.) - - Usually, you first create an instance: - \code - QCPStatisticalBox *newBox = new QCPStatisticalBox(customPlot->xAxis, customPlot->yAxis);\endcode - add it to the customPlot with QCustomPlot::addPlottable: - \code - customPlot->addPlottable(newBox);\endcode - and then modify the properties of the newly created plottable, e.g.: - \code - newBox->setName("Measurement Series 1"); - newBox->setData(1, 3, 4, 5, 7); - newBox->setOutliers(QVector() << 0.5 << 0.64 << 7.2 << 7.42);\endcode -*/ - -/*! - Constructs a statistical box which uses \a keyAxis as its key axis ("x") and \a valueAxis as its - value axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance and - not have the same orientation. If either of these restrictions is violated, a corresponding - message is printed to the debug output (qDebug), the construction is not aborted, though. - - The constructed statistical box can be added to the plot with QCustomPlot::addPlottable, - QCustomPlot then takes ownership of the statistical box. -*/ -QCPStatisticalBox::QCPStatisticalBox(QCPAxis *keyAxis, QCPAxis *valueAxis) : - QCPAbstractPlottable(keyAxis, valueAxis), - mKey(0), - mMinimum(0), - mLowerQuartile(0), - mMedian(0), - mUpperQuartile(0), - mMaximum(0) -{ - setOutlierStyle(QCP::ssCircle); - setOutlierSize(5); - setWhiskerWidth(0.2); - setWidth(0.5); - - setPen(QPen(Qt::black)); - setSelectedPen(QPen(Qt::blue, 2.5)); - setMedianPen(QPen(Qt::black, 3, Qt::SolidLine, Qt::FlatCap)); - setWhiskerPen(QPen(Qt::black, 0, Qt::DashLine, Qt::FlatCap)); - setWhiskerBarPen(QPen(Qt::black)); - setOutlierPen(QPen(Qt::blue)); - setBrush(Qt::NoBrush); - setSelectedBrush(Qt::NoBrush); -} - -QCPStatisticalBox::~QCPStatisticalBox() -{ -} - -/*! - Sets the key coordinate of the statistical box. -*/ -void QCPStatisticalBox::setKey(double key) -{ - mKey = key; -} - -/*! - Sets the parameter "minimum" of the statistical box plot. This is the position of the lower - whisker, typically the minimum measurement of the sample that's not considered an outlier. - - \see setMaximum, setWhiskerPen, setWhiskerBarPen, setWhiskerWidth -*/ -void QCPStatisticalBox::setMinimum(double value) -{ - mMinimum = value; -} - -/*! - Sets the parameter "lower Quartile" of the statistical box plot. This is the lower end of the - box. The lower and the upper quartiles are the two statistical quartiles around the median of the - sample, they contain 50% of the sample data. - - \see setUpperQuartile, setPen, setBrush, setWidth -*/ -void QCPStatisticalBox::setLowerQuartile(double value) -{ - mLowerQuartile = value; -} - -/*! - Sets the parameter "median" of the statistical box plot. This is the value of the median mark - inside the quartile box. The median separates the sample data in half (50% of the sample data is - below/above the median). - - \see setMedianPen -*/ -void QCPStatisticalBox::setMedian(double value) -{ - mMedian = value; -} - -/*! - Sets the parameter "upper Quartile" of the statistical box plot. This is the upper end of the - box. The lower and the upper quartiles are the two statistical quartiles around the median of the - sample, they contain 50% of the sample data. - - \see setLowerQuartile, setPen, setBrush, setWidth -*/ -void QCPStatisticalBox::setUpperQuartile(double value) -{ - mUpperQuartile = value; -} - -/*! - Sets the parameter "maximum" of the statistical box plot. This is the position of the upper - whisker, typically the maximum measurement of the sample that's not considered an outlier. - - \see setMinimum, setWhiskerPen, setWhiskerBarPen, setWhiskerWidth -*/ -void QCPStatisticalBox::setMaximum(double value) -{ - mMaximum = value; -} - -/*! - Sets a vector of outlier values that will be drawn as circles. Any data points in the sample that - are not within the whiskers (\ref setMinimum, \ref setMaximum) should be considered outliers and - displayed as such. - - \see setOutlierPen, setOutlierBrush, setOutlierSize -*/ -void QCPStatisticalBox::setOutliers(const QVector &values) -{ - mOutliers = values; -} - -/*! - Sets all parameters of the statistical box plot at once. - - \see setKey, setMinimum, setLowerQuartile, setMedian, setUpperQuartile, setMaximum -*/ -void QCPStatisticalBox::setData(double key, double minimum, double lowerQuartile, double median, double upperQuartile, double maximum) -{ - setKey(key); - setMinimum(minimum); - setLowerQuartile(lowerQuartile); - setMedian(median); - setUpperQuartile(upperQuartile); - setMaximum(maximum); -} - -/*! - Sets the width of the box in key coordinates. - - \see setWhiskerWidth -*/ -void QCPStatisticalBox::setWidth(double width) -{ - mWidth = width; -} - -/*! - Sets the width of the whiskers (\ref setMinimum, \ref setMaximum) in key coordinates. - - \see setWidth -*/ -void QCPStatisticalBox::setWhiskerWidth(double width) -{ - mWhiskerWidth = width; -} - -/*! - Sets the pen used for drawing the whisker backbone (That's the line parallel to the value axis). - - Make sure to set the \a pen capStyle to Qt::FlatCap to prevent the backbone from reaching a few - pixels past the bars, when using a non-zero pen width. - - \see setWhiskerBarPen -*/ -void QCPStatisticalBox::setWhiskerPen(const QPen &pen) -{ - mWhiskerPen = pen; -} - -/*! - Sets the pen used for drawing the whisker bars (Those are the lines parallel to the key axis at - each end of the backbone). - - \see setWhiskerPen -*/ -void QCPStatisticalBox::setWhiskerBarPen(const QPen &pen) -{ - mWhiskerBarPen = pen; -} - -/*! - Sets the pen used for drawing the median indicator line inside the statistical box. - - Make sure to set the \a pen capStyle to Qt::FlatCap to prevent the median line from reaching a - few pixels outside the box, when using a non-zero pen width. -*/ -void QCPStatisticalBox::setMedianPen(const QPen &pen) -{ - mMedianPen = pen; -} - -/*! - Sets the pixel size of the scatter symbols that represent the outlier data points. - - \see setOutlierPen, setOutliers -*/ -void QCPStatisticalBox::setOutlierSize(double pixels) -{ - mOutlierSize = pixels; -} - -/*! - Sets the pen used to draw the outlier data points. - - \see setOutlierSize, setOutliers -*/ -void QCPStatisticalBox::setOutlierPen(const QPen &pen) -{ - mOutlierPen = pen; -} - -/*! - Sets the scatter style of the outlier data points. - - \see setOutlierSize, setOutlierPen, setOutliers -*/ -void QCPStatisticalBox::setOutlierStyle(QCP::ScatterStyle style) -{ - mOutlierStyle = style; -} - -/* inherits documentation from base class */ -void QCPStatisticalBox::clearData() -{ - setOutliers(QVector()); - setKey(0); - setMinimum(0); - setLowerQuartile(0); - setMedian(0); - setUpperQuartile(0); - setMaximum(0); -} - -/* inherits documentation from base class */ -double QCPStatisticalBox::selectTest(const QPointF &pos) const -{ - double posKey, posValue; - pixelsToCoords(pos, posKey, posValue); - // quartile box: - QCPRange keyRange(mKey-mWidth*0.5, mKey+mWidth*0.5); - QCPRange valueRange(mLowerQuartile, mUpperQuartile); - if (keyRange.contains(posKey) && valueRange.contains(posValue)) - return mParentPlot->selectionTolerance()*0.99; - - // min/max whiskers: - if (QCPRange(mMinimum, mMaximum).contains(posValue)) - return qAbs(mKeyAxis->coordToPixel(mKey)-mKeyAxis->coordToPixel(posKey)); - - return -1; -} - -/* inherits documentation from base class */ -void QCPStatisticalBox::draw(QCPPainter *painter) -{ - QRectF quartileBox; - drawQuartileBox(painter, &quartileBox); - - painter->save(); - painter->setClipRect(quartileBox, Qt::IntersectClip); - drawMedian(painter); - painter->restore(); - - drawWhiskers(painter); - drawOutliers(painter); -} - -/* inherits documentation from base class */ -void QCPStatisticalBox::drawLegendIcon(QCPPainter *painter, const QRect &rect) const -{ - // draw filled rect: - applyDefaultAntialiasingHint(painter); - painter->setPen(mPen); - painter->setBrush(mBrush); - QRectF r = QRectF(0, 0, rect.width()*0.67, rect.height()*0.67); - r.moveCenter(rect.center()); - painter->drawRect(r); -} - -/*! \internal - - Draws the quartile box. \a box is an output parameter that returns the quartile box (in pixel - coordinates) which is used to set the clip rect of the painter before calling \ref drawMedian (so - the median doesn't draw outside the quartile box). -*/ -void QCPStatisticalBox::drawQuartileBox(QCPPainter *painter, QRectF *quartileBox) const -{ - QRectF box; - box.setTopLeft(coordsToPixels(mKey-mWidth*0.5, mUpperQuartile)); - box.setBottomRight(coordsToPixels(mKey+mWidth*0.5, mLowerQuartile)); - applyDefaultAntialiasingHint(painter); - painter->setPen(mainPen()); - painter->setBrush(mainBrush()); - painter->drawRect(box); - if (quartileBox) - *quartileBox = box; -} - -/*! \internal - - Draws the median line inside the quartile box. -*/ -void QCPStatisticalBox::drawMedian(QCPPainter *painter) const -{ - QLineF medianLine; - medianLine.setP1(coordsToPixels(mKey-mWidth*0.5, mMedian)); - medianLine.setP2(coordsToPixels(mKey+mWidth*0.5, mMedian)); - applyDefaultAntialiasingHint(painter); - painter->setPen(mMedianPen); - painter->drawLine(medianLine); -} - -/*! \internal - - Draws both whisker backbones and bars. -*/ -void QCPStatisticalBox::drawWhiskers(QCPPainter *painter) const -{ - QLineF backboneMin, backboneMax, barMin, barMax; - backboneMax.setPoints(coordsToPixels(mKey, mUpperQuartile), coordsToPixels(mKey, mMaximum)); - backboneMin.setPoints(coordsToPixels(mKey, mLowerQuartile), coordsToPixels(mKey, mMinimum)); - barMax.setPoints(coordsToPixels(mKey-mWhiskerWidth*0.5, mMaximum), coordsToPixels(mKey+mWhiskerWidth*0.5, mMaximum)); - barMin.setPoints(coordsToPixels(mKey-mWhiskerWidth*0.5, mMinimum), coordsToPixels(mKey+mWhiskerWidth*0.5, mMinimum)); - applyErrorBarsAntialiasingHint(painter); - painter->setPen(mWhiskerPen); - painter->drawLine(backboneMin); - painter->drawLine(backboneMax); - painter->setPen(mWhiskerBarPen); - painter->drawLine(barMin); - painter->drawLine(barMax); -} - -/*! \internal - - Draws the outlier circles. -*/ -void QCPStatisticalBox::drawOutliers(QCPPainter *painter) const -{ - applyScattersAntialiasingHint(painter); - painter->setPen(mOutlierPen); - painter->setBrush(Qt::NoBrush); - for (int i=0; idrawScatter(dataPoint.x(), dataPoint.y(), mOutlierSize, mOutlierStyle); - } -} - -/* inherits documentation from base class */ -QCPRange QCPStatisticalBox::getKeyRange(bool &validRange, SignDomain inSignDomain) const -{ - validRange = mWidth > 0; - if (inSignDomain == sdBoth) - { - return QCPRange(mKey-mWidth*0.5, mKey+mWidth*0.5); - } else if (inSignDomain == sdNegative) - { - if (mKey+mWidth*0.5 < 0) - return QCPRange(mKey-mWidth*0.5, mKey+mWidth*0.5); - else if (mKey < 0) - return QCPRange(mKey-mWidth*0.5, mKey); - else - { - validRange = false; - return QCPRange(); - } - } else if (inSignDomain == sdPositive) - { - if (mKey-mWidth*0.5 > 0) - return QCPRange(mKey-mWidth*0.5, mKey+mWidth*0.5); - else if (mKey > 0) - return QCPRange(mKey, mKey+mWidth*0.5); - else - { - validRange = false; - return QCPRange(); - } - } - validRange = false; - return QCPRange(); -} - -/* inherits documentation from base class */ -QCPRange QCPStatisticalBox::getValueRange(bool &validRange, SignDomain inSignDomain) const -{ - if (inSignDomain == sdBoth) - { - double lower = qMin(mMinimum, qMin(mMedian, mLowerQuartile)); - double upper = qMax(mMaximum, qMax(mMedian, mUpperQuartile)); - for (int i=0; i upper) - upper = mOutliers.at(i); - } - validRange = upper > lower; - return QCPRange(lower, upper); - } else - { - QVector values; // values that must be considered (i.e. all outliers and the five box-parameters) - values.reserve(mOutliers.size() + 5); - values << mMaximum << mUpperQuartile << mMedian << mLowerQuartile << mMinimum; - values << mOutliers; - // go through values and find the ones in legal range: - bool haveUpper = false; - bool haveLower = false; - double upper = 0; - double lower = 0; - for (int i=0; i 0)) - { - if (values.at(i) > upper || !haveUpper) - { - upper = values.at(i); - haveUpper = true; - } - if (values.at(i) < lower || !haveLower) - { - lower = values.at(i); - haveLower = true; - } - } - } - // return the bounds if we found some sensible values: - if (haveLower && haveUpper && lower < upper) - { - validRange = true; - return QCPRange(lower, upper); - } else - { - validRange = false; - return QCPRange(); - } - } -} - - -// ================================================================================ -// =================== QCPAbstractItem -// ================================================================================ - -/*! \class QCPAbstractItem - \brief The abstract base class for all items in a plot. - - In QCustomPlot, items are supplemental graphical elements that are neither plottables - (QCPAbstractPlottable) nor axes (QCPAxis). While plottables are always tied to two axes and thus - plot coordinates, items can also be placed in absolute coordinates independent of any axes. Each - specific item has at least one QCPItemPosition member which controls the positioning. Some items - are defined by more than one coordinate and thus have two or more QCPItemPosition members (For - example, QCPItemRect has \a topLeft and \a bottomRight). - - This abstract base class defines a very basic interface like visibility and clipping. Since this - class is abstract, it can't be instantiated. Use one of the subclasses or create a subclass - yourself to create new items. - - The built-in items are: - - - - - - - - - - -
    QCPItemLineA line defined by a start and an end point. May have different ending styles on each side (e.g. arrows).
    QCPItemStraightLineA straight line defined by a start and a direction point. Unlike QCPItemLine, the straight line is infinitely long and has no endings.
    QCPItemCurveA curve defined by start, end and two intermediate control points. May have different ending styles on each side (e.g. arrows).
    QCPItemRectA rectangle
    QCPItemEllipseAn ellipse
    QCPItemPixmapAn arbitrary pixmap
    QCPItemTextA text label
    QCPItemBracketA bracket which may be used to reference/highlight certain parts in the plot.
    QCPItemTracerAn item that can be attached to a QCPGraph and sticks to its data points, given a key coordinate.
    - - \section items-using Using items - - First you instantiate the item you want to use and add it to the plot: - \code - QCPItemLine *line = new QCPItemLine(customPlot); - customPlot->addItem(line); - \endcode - by default, the positions of the item are bound to the x- and y-Axis of the plot. So we can just - set the plot coordinates where the line should start/end: - \code - line->start->setCoords(-0.1, 0.8); - line->end->setCoords(1.1, 0.2); - \endcode - If we wanted the line to be positioned not in plot coordinates but a different coordinate system, - e.g. absolute pixel positions on the QCustomPlot surface, we would have changed the position type - like this: - \code - line->start->setType(QCPItemPosition::ptAbsolute); - line->end->setType(QCPItemPosition::ptAbsolute); - \endcode - Then we can set the coordinates, this time in pixels: - \code - line->start->setCoords(100, 200); - line->end->setCoords(450, 320); - \endcode - - \section items-subclassing Creating own items - - To create an own item, you implement a subclass of QCPAbstractItem. These are the pure - virtual functions, you must implement: - \li \ref selectTest - \li \ref draw - - See the documentation of those functions for what they need to do. - - \subsection items-positioning Allowing the item to be positioned - - As mentioned, item positions are represented by QCPItemPosition members. Let's assume the new item shall - have only one coordinate as its position (as opposed to two like a rect or multiple like a polygon). You then add - a public member of type QCPItemPosition like so: - - \code QCPItemPosition * const myPosition;\endcode - - the const makes sure the pointer itself can't be modified from the user of your new item (the QCPItemPosition - instance it points to, can be modified, of course). - The initialization of this pointer is made easy with the \ref createPosition function. Just assign - the return value of this function to each QCPItemPosition in the constructor of your item. \ref createPosition - takes a string which is the name of the position, typically this is identical to the variable name. - For example, the constructor of QCPItemExample could look like this: - - \code - QCPItemExample::QCPItemExample(QCustomPlot *parentPlot) : - QCPAbstractItem(parentPlot), - myPosition(createPosition("myPosition")) - { - // other constructor code - } - \endcode - - \subsection items-drawing The draw function - - Your implementation of the draw function should check whether the item is visible (\a mVisible) - and then draw the item. You can retrieve its position in pixel coordinates from the position - member(s) via \ref QCPItemPosition::pixelPoint. - - To optimize performance you should calculate a bounding rect first (don't forget to take the pen - width into account), check whether it intersects the \ref clipRect, and only draw the item at all - if this is the case. - - \subsection items-selection The selectTest function - - Your implementation of the \ref selectTest function may use the helpers \ref distSqrToLine and - \ref rectSelectTest. With these, the implementation of the selection test becomes significantly - simpler for most items. - - \subsection anchors Providing anchors - - Providing anchors (QCPItemAnchor) starts off like adding a position. First you create a public - member, e.g. - - \code QCPItemAnchor * const bottom;\endcode - - and create it in the constructor with the \ref createAnchor function, assigning it a name and an - anchor id (an integer enumerating all anchors on the item, you may create an own enum for this). - Since anchors can be placed anywhere, relative to the item's position(s), your item needs to - provide the position of every anchor with the reimplementation of the \ref anchorPixelPoint(int - anchorId) function. - - In essence the QCPItemAnchor is merely an intermediary that itself asks your item for the pixel - position when anything attached to the anchor needs to know the coordinates. -*/ - -/* start of documentation of inline functions */ - -/*! \fn QList QCPAbstractItem::positions() const - - Returns all positions of the item in a list. - - \see anchors, position -*/ - -/*! \fn QList QCPAbstractItem::anchors() const - - Returns all anchors of the item in a list. Note that since a position (QCPItemPosition) is always - also an anchor, the list will also contain the positions of this item. - - \see positions, anchor -*/ - -/* end of documentation of inline functions */ -/* start documentation of pure virtual functions */ - -/*! \fn double QCPAbstractItem::selectTest(const QPointF &pos) const = 0 - - This function is used to decide whether a click hits an item or not. - - \a pos is a point in pixel coordinates on the QCustomPlot surface. This function returns the - shortest pixel distance of this point to the item. If the item is either invisible or the - distance couldn't be determined, -1.0 is returned. \ref setSelectable has no influence on the - return value of this function. - - If the item is represented not by single lines but by an area like QCPItemRect or QCPItemText, a - click inside the area returns a constant value greater zero (typically 99% of the - selectionTolerance of the parent QCustomPlot). If the click lies outside the area, this function - returns -1.0. - - Providing a constant value for area objects allows selecting line objects even when they are - obscured by such area objects, by clicking close to the lines (i.e. closer than - 0.99*selectionTolerance). - - The actual setting of the selection state is not done by this function. This is handled by the - parent QCustomPlot when the mouseReleaseEvent occurs. - - \see setSelected, QCustomPlot::setInteractions -*/ - -/*! \fn void QCPAbstractItem::draw(QCPPainter *painter) = 0 - \internal - - Draws this item with the provided \a painter. Called by \ref QCustomPlot::draw on all its - visible items. - - The cliprect of the provided painter is set to the rect returned by \ref clipRect before this - function is called. For items this depends on the clipping settings defined by \ref - setClipToAxisRect, \ref setClipKeyAxis and \ref setClipValueAxis. -*/ - -/* end documentation of pure virtual functions */ -/* start documentation of signals */ - -/*! \fn void QCPAbstractItem::selectionChanged(bool selected) - This signal is emitted when the selection state of this item has changed, either by user interaction - or by a direct call to \ref setSelected. -*/ - -/* end documentation of signals */ - -/*! - Base class constructor which initializes base class members. -*/ -QCPAbstractItem::QCPAbstractItem(QCustomPlot *parentPlot) : - QCPLayerable(parentPlot), - mClipToAxisRect(true), - mClipKeyAxis(parentPlot->xAxis), - mClipValueAxis(parentPlot->yAxis), - mSelectable(true), - mSelected(false) -{ -} - -QCPAbstractItem::~QCPAbstractItem() -{ - // don't delete mPositions because every position is also an anchor and thus in mAnchors - qDeleteAll(mAnchors); -} - -/*! - Sets whether the item shall be clipped to the axis rect or whether it shall be visible on the - entire QCustomPlot. The axis rect is defined by the clip axes which can be set via \ref - setClipAxes or individually with \ref setClipKeyAxis and \ref setClipValueAxis. -*/ -void QCPAbstractItem::setClipToAxisRect(bool clip) -{ - mClipToAxisRect = clip; -} - -/*! - Sets both clip axes. Together they define the axis rect that will be used to clip the item - when \ref setClipToAxisRect is set to true. - - \see setClipToAxisRect, setClipKeyAxis, setClipValueAxis -*/ -void QCPAbstractItem::setClipAxes(QCPAxis *keyAxis, QCPAxis *valueAxis) -{ - mClipKeyAxis = keyAxis; - mClipValueAxis = valueAxis; -} - -/*! - Sets the clip key axis. Together with the clip value axis it defines the axis rect that will be - used to clip the item when \ref setClipToAxisRect is set to true. - - \see setClipToAxisRect, setClipAxes, setClipValueAxis -*/ -void QCPAbstractItem::setClipKeyAxis(QCPAxis *axis) -{ - mClipKeyAxis = axis; -} - -/*! - Sets the clip value axis. Together with the clip key axis it defines the axis rect that will be - used to clip the item when \ref setClipToAxisRect is set to true. - - \see setClipToAxisRect, setClipAxes, setClipKeyAxis -*/ -void QCPAbstractItem::setClipValueAxis(QCPAxis *axis) -{ - mClipValueAxis = axis; -} - -/*! - Sets whether the user can (de-)select this item by clicking on the QCustomPlot surface. - (When \ref QCustomPlot::setInteractions contains QCustomPlot::iSelectItems.) - - However, even when \a selectable was set to false, it is possible to set the selection manually, - by calling \ref setSelected directly. - - \see QCustomPlot::setInteractions, setSelected -*/ -void QCPAbstractItem::setSelectable(bool selectable) -{ - mSelectable = selectable; -} - -/*! - Sets whether this item is selected or not. When selected, it might use a different visual - appearance (e.g. pen and brush), this depends on the specific item, though. - - The entire selection mechanism for items is handled automatically when \ref - QCustomPlot::setInteractions contains QCustomPlot::iSelectItems. You only need to call this function when you - wish to change the selection state manually. - - This function can change the selection state even when \ref setSelectable was set to false. - - emits the \ref selectionChanged signal when \a selected is different from the previous selection state. - - \see selectTest -*/ -void QCPAbstractItem::setSelected(bool selected) -{ - if (mSelected != selected) - { - mSelected = selected; - emit selectionChanged(mSelected); - } -} - -/*! - Returns the QCPItemPosition with the specified \a name. If this item doesn't have a position by - that name, returns 0. - - This function provides an alternative way to access item positions. Normally, you access - positions direcly by their member pointers (which typically have the same variable name as \a - name). - - \see positions, anchor -*/ -QCPItemPosition *QCPAbstractItem::position(const QString &name) const -{ - for (int i=0; iname() == name) - return mPositions.at(i); - } - qDebug() << Q_FUNC_INFO << "position with name not found:" << name; - return 0; -} - -/*! - Returns the QCPItemAnchor with the specified \a name. If this item doesn't have an anchor by - that name, returns 0. - - This function provides an alternative way to access item anchors. Normally, you access - anchors direcly by their member pointers (which typically have the same variable name as \a - name). - - \see anchors, position -*/ -QCPItemAnchor *QCPAbstractItem::anchor(const QString &name) const -{ - for (int i=0; iname() == name) - return mAnchors.at(i); - } - qDebug() << Q_FUNC_INFO << "anchor with name not found:" << name; - return 0; -} - -/*! - Returns whether this item has an anchor with the specified \a name. - - Note that you can check for positions with this function, too, because every position is also an - anchor (QCPItemPosition inherits from QCPItemAnchor). - - \see anchor, position -*/ -bool QCPAbstractItem::hasAnchor(const QString &name) const -{ - for (int i=0; iname() == name) - return true; - } - return false; -} - -/*! \internal - - Returns the rect the visual representation of this item is clipped to. This depends on the - current setting of \ref setClipToAxisRect aswell as the clip axes set with \ref setClipAxes. - - If the item is not clipped to an axis rect, the \ref QCustomPlot::viewport rect is returned. - - \see draw -*/ -QRect QCPAbstractItem::clipRect() const -{ - if (mClipToAxisRect) - { - if (mClipKeyAxis && mClipValueAxis) - return mClipKeyAxis->axisRect() | mClipValueAxis->axisRect(); - else if (mClipKeyAxis) - return mClipKeyAxis->axisRect(); - else if (mClipValueAxis) - return mClipValueAxis->axisRect(); - } - - return mParentPlot->viewport(); -} - -/*! \internal - - A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter - before drawing item lines. - - This is the antialiasing state the painter passed to the \ref draw method is in by default. - - This function takes into account the local setting of the antialiasing flag as well as - the overrides set e.g. with \ref QCustomPlot::setNotAntialiasedElements. - - \see setAntialiased -*/ -void QCPAbstractItem::applyDefaultAntialiasingHint(QCPPainter *painter) const -{ - applyAntialiasingHint(painter, mAntialiased, QCP::aeItems); -} - -/*! \internal - - Finds the shortest squared distance of \a point to the line segment defined by \a start and \a - end. - - This function may be used to help with the implementation of the \ref selectTest function for - specific items. - - \note This function is identical to QCPAbstractPlottable::distSqrToLine - - \see rectSelectTest -*/ -double QCPAbstractItem::distSqrToLine(const QPointF &start, const QPointF &end, const QPointF &point) const -{ - QVector2D a(start); - QVector2D b(end); - QVector2D p(point); - QVector2D v(b-a); - - double vLengthSqr = v.lengthSquared(); - if (!qFuzzyIsNull(vLengthSqr)) - { - double mu = QVector2D::dotProduct(p-a, v)/vLengthSqr; - if (mu < 0) - return (a-p).lengthSquared(); - else if (mu > 1) - return (b-p).lengthSquared(); - else - return ((a + mu*v)-p).lengthSquared(); - } else - return (a-p).lengthSquared(); -} - -/*! \internal - - A convenience function which returns the selectTest value for a specified \a rect and a specified - click position \a pos. \a filledRect defines whether a click inside the rect should also be - considered a hit or whether only the rect border is sensitive to hits. - - This function may be used to help with the implementation of the \ref selectTest function for - specific items. - - For example, if your item consists of four rects, call this function four times, once for each - rect, in your \ref selectTest reimplementation. Finally, return the minimum of all four returned - values which were greater or equal to zero. (Because this function may return -1.0 when \a pos - doesn't hit \a rect at all). If all calls returned -1.0, return -1.0, too, because your item - wasn't hit. - - \see distSqrToLine -*/ -double QCPAbstractItem::rectSelectTest(const QRectF &rect, const QPointF &pos, bool filledRect) const -{ - double result = -1; - - // distance to border: - QList lines; - lines << QLineF(rect.topLeft(), rect.topRight()) << QLineF(rect.bottomLeft(), rect.bottomRight()) - << QLineF(rect.topLeft(), rect.bottomLeft()) << QLineF(rect.topRight(), rect.bottomRight()); - double minDistSqr = std::numeric_limits::max(); - for (int i=0; i mParentPlot->selectionTolerance()*0.99) - { - if (rect.contains(pos)) - result = mParentPlot->selectionTolerance()*0.99; - } - return result; -} - -/*! \internal - - Returns the pixel position of the anchor with Id \a anchorId. This function must be reimplemented in - item subclasses if they want to provide anchors (QCPItemAnchor). - - For example, if the item has two anchors with id 0 and 1, this function takes one of these anchor - ids and returns the respective pixel points of the specified anchor. - - \see createAnchor -*/ -QPointF QCPAbstractItem::anchorPixelPoint(int anchorId) const -{ - qDebug() << Q_FUNC_INFO << "called on item which shouldn't have any anchors (anchorPixelPos not reimplemented). anchorId" << anchorId; - return QPointF(); -} - -/*! \internal - - Creates a QCPItemPosition, registers it with this item and returns a pointer to it. The specified - \a name must be a unique string that is usually identical to the variable name of the position - member (This is needed to provide the name based \ref position access to positions). - - Don't delete positions created by this function manually, as the item will take care of it. - - Use this function in the constructor (initialization list) of the specific item subclass to - create each position member. Don't create QCPItemPositions with \b new yourself, because they - won't be registered with the item properly. - - \see createAnchor -*/ -QCPItemPosition *QCPAbstractItem::createPosition(const QString &name) -{ - if (hasAnchor(name)) - qDebug() << Q_FUNC_INFO << "anchor/position with name exists already:" << name; - QCPItemPosition *newPosition = new QCPItemPosition(mParentPlot, this, name); - mPositions.append(newPosition); - mAnchors.append(newPosition); // every position is also an anchor - newPosition->setType(QCPItemPosition::ptPlotCoords); - newPosition->setAxes(mParentPlot->xAxis, mParentPlot->yAxis); - newPosition->setCoords(0, 0); - return newPosition; -} - -/*! \internal - - Creates a QCPItemAnchor, registers it with this item and returns a pointer to it. The specified - \a name must be a unique string that is usually identical to the variable name of the anchor - member (This is needed to provide the name based \ref anchor access to anchors). - - The \a anchorId must be a number identifying the created anchor. It is recommended to create an - enum (e.g. "AnchorIndex") for this on each item that uses anchors. This id is used by the anchor - to identify itself when it calls QCPAbstractItem::anchorPixelPoint. That function then returns - the correct pixel coordinates for the passed anchor id. - - Don't delete anchors created by this function manually, as the item will take care of it. - - Use this function in the constructor (initialization list) of the specific item subclass to - create each anchor member. Don't create QCPItemAnchors with \b new yourself, because then they - won't be registered with the item properly. - - \see createPosition -*/ -QCPItemAnchor *QCPAbstractItem::createAnchor(const QString &name, int anchorId) -{ - if (hasAnchor(name)) - qDebug() << Q_FUNC_INFO << "anchor/position with name exists already:" << name; - QCPItemAnchor *newAnchor = new QCPItemAnchor(mParentPlot, this, name, anchorId); - mAnchors.append(newAnchor); - return newAnchor; -} - - -// ================================================================================ -// =================== QCPItemPosition -// ================================================================================ - -/*! \class QCPItemPosition - \brief Manages the position of an item. - - Every item has at least one public QCPItemPosition member pointer which provides ways to position the - item on the QCustomPlot surface. Some items have multiple positions, for example QCPItemRect has two: - \a topLeft and \a bottomRight. - - QCPItemPosition has a type (\ref PositionType) that can be set with \ref setType. This type defines - how coordinates passed to \ref setCoords are to be interpreted, e.g. as absolute pixel coordinates, as - plot coordinates of certain axes, etc. - - Further, QCPItemPosition may have a parent QCPItemAnchor, see \ref setParentAnchor. (Note that every - QCPItemPosition inherits from QCPItemAnchor and thus can itself be used as parent anchor for other - positions.) This way you can tie multiple items together. If the QCPItemPosition has a parent, the - coordinates set with \ref setCoords are considered to be absolute values in the reference frame of the - parent anchor, where (0, 0) means directly ontop of the parent anchor. For example, You could attach - the \a start position of a QCPItemLine to the \a bottom anchor of a QCPItemText to make the starting - point of the line always be centered under the text label, no matter where the text is moved to, or is - itself tied to. - - To set the apparent pixel position on the QCustomPlot surface directly, use \ref setPixelPoint. This - works no matter what type this QCPItemPosition is or what parent-child situation it is in, as \ref - setPixelPoint transforms the coordinates appropriately, to make the position appear at the specified - pixel values. -*/ - -/*! - Creates a new QCPItemPosition. You shouldn't create QCPItemPosition instances directly, even if - you want to make a new item subclass. Use \ref QCPAbstractItem::createPosition instead, as - explained in the subclassing section of the QCPAbstractItem documentation. -*/ -QCPItemPosition::QCPItemPosition(QCustomPlot *parentPlot, QCPAbstractItem *parentItem, const QString name) : - QCPItemAnchor(parentPlot, parentItem, name), - mPositionType(ptAbsolute), - mKeyAxis(0), - mValueAxis(0), - mKey(0), - mValue(0), - mParentAnchor(0) -{ -} - -QCPItemPosition::~QCPItemPosition() -{ - // unregister as parent at children: - // Note: this is done in ~QCPItemAnchor again, but it's important QCPItemPosition does it itself, because only then - // the setParentAnchor(0) call the correct QCPItemPosition::pixelPos function instead of QCPItemAnchor::pixelPos - QList currentChildren(mChildren.toList()); - for (int i=0; isetParentAnchor(0); // this acts back on this anchor and child removes itself from mChildren - // unregister as child in parent: - if (mParentAnchor) - mParentAnchor->removeChild(this); -} - -/*! - Sets the type of the position. The type defines how the coordinates passed to \ref setCoords - should be handled and how the QCPItemPosition should behave in the plot. Note that the position - type \ref ptPlotCoords is only available (and sensible) when the position has no parent anchor - (\ref setParentAnchor). - - The possible values for \a type can be separated in two main categories: - - \li The position is regarded as a point in plot coordinates. This corresponds to \ref ptPlotCoords - and requires two axes that define the plot coordinate system. They can be specified with \ref setAxes. - By default, the QCustomPlot's x- and yAxis are used. - - \li The position is fixed on the QCustomPlot surface, i.e. independant of axis ranges. This - corresponds to all other types, i.e. \ref ptAbsolute, \ref ptViewportRatio and \ref ptAxisRectRatio. They - differ only in the way the absolute position is described, see the documentation of PositionType - for details. - - \note If the type is changed, the apparent pixel position on the plot is preserved. This means - the coordinates as retrieved with coords() and set with \ref setCoords may change in the process. -*/ -void QCPItemPosition::setType(QCPItemPosition::PositionType type) -{ - if (mPositionType != type) - { - QPointF pixelP = pixelPoint(); - mPositionType = type; - setPixelPoint(pixelP); - } -} - -/*! - Sets the parent of this QCPItemPosition to \a parentAnchor. This means the position will now - follow any position changes of the anchor. The local coordinate system of positions with a parent - anchor always is absolute with (0, 0) being exactly on top of the parent anchor. (Hence the type - shouldn't be \ref ptPlotCoords for positions with parent anchors.) - - if \a keepPixelPosition is true, the current pixel position of the QCPItemPosition is preserved - during reparenting. If it's set to false, the coordinates are set to (0, 0), i.e. the position - will be exactly on top of the parent anchor. - - To remove this QCPItemPosition from any parent anchor, set \a parentAnchor to 0. - - \note If the QCPItemPosition previously had no parent and the type is \ref ptPlotCoords, the type - is set to \ref ptAbsolute, to keep the position in a valid state. -*/ -bool QCPItemPosition::setParentAnchor(QCPItemAnchor *parentAnchor, bool keepPixelPosition) -{ - // make sure self is not assigned as parent: - if (parentAnchor == this) - { - qDebug() << Q_FUNC_INFO << "can't set self as parent anchor" << reinterpret_cast(parentAnchor); - return false; - } - // make sure no recursive parent-child-relationships are created: - QCPItemAnchor *currentParent = parentAnchor; - while (currentParent) - { - if (QCPItemPosition *currentParentPos = dynamic_cast(currentParent)) - { - // is a QCPItemPosition, might have further parent, so keep iterating - if (currentParentPos == this) - { - qDebug() << Q_FUNC_INFO << "can't create recursive parent-child-relationship" << reinterpret_cast(parentAnchor); - return false; - } - currentParent = currentParentPos->mParentAnchor; - } else - { - // is a QCPItemAnchor, can't have further parent, so just compare parent items - if (currentParent->mParentItem == mParentItem) - { - qDebug() << Q_FUNC_INFO << "can't create recursive parent-child-relationship" << reinterpret_cast(parentAnchor); - return false; - } - break; - } - } - - // if previously no parent set and PosType is still ptPlotCoords, set to ptAbsolute: - if (!mParentAnchor && mPositionType == ptPlotCoords) - setType(ptAbsolute); - - // save pixel position: - QPointF pixelP; - if (keepPixelPosition) - pixelP = pixelPoint(); - // unregister at current parent anchor: - if (mParentAnchor) - mParentAnchor->removeChild(this); - // register at new parent anchor: - if (parentAnchor) - parentAnchor->addChild(this); - mParentAnchor = parentAnchor; - // restore pixel position under new parent: - if (keepPixelPosition) - setPixelPoint(pixelP); - else - setCoords(0, 0); - return true; -} - -/*! - Sets the coordinates of this QCPItemPosition. What the coordinates mean, is defined by the type - (\ref setType). - - For example, if the type is \ref ptAbsolute, \a key and \a value mean the x and y pixel position - on the QCustomPlot surface where the origin (0, 0) is in the top left corner of the QCustomPlot - viewport. If the type is \ref ptPlotCoords, \a key and \a value mean a point in the plot - coordinate system defined by the axes set by \ref setAxes. (By default the QCustomPlot's x- and - yAxis.) - - \see setPixelPoint -*/ -void QCPItemPosition::setCoords(double key, double value) -{ - mKey = key; - mValue = value; -} - -/*! \overload - - Sets the coordinates as a QPointF \a pos where pos.x has the meaning of \a key and pos.y the - meaning of \a value of the \ref setCoords(double key, double value) function. -*/ -void QCPItemPosition::setCoords(const QPointF &pos) -{ - setCoords(pos.x(), pos.y()); -} - -/*! - Returns the final absolute pixel position of the QCPItemPosition on the QCustomPlot surface. It - includes all effects of type (\ref setType) and possible parent anchors (\ref setParentAnchor). - - \see setPixelPoint -*/ -QPointF QCPItemPosition::pixelPoint() const -{ - switch (mPositionType) - { - case ptAbsolute: - { - if (mParentAnchor) - return QPointF(mKey, mValue) + mParentAnchor->pixelPoint(); - else - return QPointF(mKey, mValue); - } - - case ptViewportRatio: - { - if (mParentAnchor) - { - return QPointF(mKey*mParentPlot->viewport().width(), - mValue*mParentPlot->viewport().height()) + mParentAnchor->pixelPoint(); - } else - { - return QPointF(mKey*mParentPlot->viewport().width(), - mValue*mParentPlot->viewport().height()) + mParentPlot->viewport().topLeft(); - } - } - - case ptAxisRectRatio: - { - if (mParentAnchor) - { - return QPointF(mKey*mParentPlot->axisRect().width(), - mValue*mParentPlot->axisRect().height()) + mParentAnchor->pixelPoint(); - } else - { - return QPointF(mKey*mParentPlot->axisRect().width(), - mValue*mParentPlot->axisRect().height()) + mParentPlot->axisRect().topLeft(); - } - } - - case ptPlotCoords: - { - double x, y; - if (mKeyAxis && mValueAxis) - { - // both key and value axis are given, translate key/value to x/y coordinates: - if (mKeyAxis->orientation() == Qt::Horizontal) - { - x = mKeyAxis->coordToPixel(mKey); - y = mValueAxis->coordToPixel(mValue); - } else - { - y = mKeyAxis->coordToPixel(mKey); - x = mValueAxis->coordToPixel(mValue); - } - } else if (mKeyAxis) - { - // only key axis is given, depending on orientation only transform x or y to key coordinate, other stays pixel: - if (mKeyAxis->orientation() == Qt::Horizontal) - { - x = mKeyAxis->coordToPixel(mKey); - y = mValue; - } else - { - y = mKeyAxis->coordToPixel(mKey); - x = mValue; - } - } else if (mValueAxis) - { - // only value axis is given, depending on orientation only transform x or y to value coordinate, other stays pixel: - if (mValueAxis->orientation() == Qt::Horizontal) - { - x = mValueAxis->coordToPixel(mValue); - y = mKey; - } else - { - y = mValueAxis->coordToPixel(mValue); - x = mKey; - } - } else - { - // no axis given, basically the same as if mAnchorType were atNone - x = mKey; - y = mValue; - } - return QPointF(x, y); - } - } - return QPointF(); -} - -/*! - When \ref setType is ptPlotCoords, this function may be used to specify the axes the coordinates set - with \ref setCoords relate to. -*/ -void QCPItemPosition::setAxes(QCPAxis *keyAxis, QCPAxis *valueAxis) -{ - mKeyAxis = keyAxis; - mValueAxis = valueAxis; -} - -/*! - Sets the apparent pixel position. This works no matter what type this QCPItemPosition is or what - parent-child situation it is in, as \ref setPixelPoint transforms the coordinates appropriately, to - make the position appear at the specified pixel values. - - Only if the type is \ref ptAbsolute and no parent anchor is set, this function is identical to \ref - setCoords. - - \see setCoords -*/ -void QCPItemPosition::setPixelPoint(const QPointF &pixelPoint) -{ - switch (mPositionType) - { - case ptAbsolute: - { - if (mParentAnchor) - setCoords(pixelPoint-mParentAnchor->pixelPoint()); - else - setCoords(pixelPoint); - break; - } - - case ptViewportRatio: - { - if (mParentAnchor) - { - QPointF p(pixelPoint-mParentAnchor->pixelPoint()); - p.rx() /= (double)mParentPlot->viewport().width(); - p.ry() /= (double)mParentPlot->viewport().height(); - setCoords(p); - } else - { - QPointF p(pixelPoint-mParentPlot->viewport().topLeft()); - p.rx() /= (double)mParentPlot->viewport().width(); - p.ry() /= (double)mParentPlot->viewport().height(); - setCoords(p); - } - break; - } - - case ptAxisRectRatio: - { - if (mParentAnchor) - { - QPointF p(pixelPoint-mParentAnchor->pixelPoint()); - p.rx() /= (double)mParentPlot->axisRect().width(); - p.ry() /= (double)mParentPlot->axisRect().height(); - setCoords(p); - } else - { - QPointF p(pixelPoint-mParentPlot->axisRect().topLeft()); - p.rx() /= (double)mParentPlot->axisRect().width(); - p.ry() /= (double)mParentPlot->axisRect().height(); - setCoords(p); - } - break; - } - - case ptPlotCoords: - { - double newKey, newValue; - if (mKeyAxis && mValueAxis) - { - // both key and value axis are given, translate point to key/value coordinates: - if (mKeyAxis->orientation() == Qt::Horizontal) - { - newKey = mKeyAxis->pixelToCoord(pixelPoint.x()); - newValue = mValueAxis->pixelToCoord(pixelPoint.y()); - } else - { - newKey = mKeyAxis->pixelToCoord(pixelPoint.y()); - newValue = mValueAxis->pixelToCoord(pixelPoint.x()); - } - } else if (mKeyAxis) - { - // only key axis is given, depending on orientation only transform x or y to key coordinate, other stays pixel: - if (mKeyAxis->orientation() == Qt::Horizontal) - { - newKey = mKeyAxis->pixelToCoord(pixelPoint.x()); - newValue = pixelPoint.y(); - } else - { - newKey = mKeyAxis->pixelToCoord(pixelPoint.y()); - newValue = pixelPoint.x(); - } - } else if (mValueAxis) - { - // only value axis is given, depending on orientation only transform x or y to value coordinate, other stays pixel: - if (mValueAxis->orientation() == Qt::Horizontal) - { - newKey = pixelPoint.y(); - newValue = mValueAxis->pixelToCoord(pixelPoint.x()); - } else - { - newKey = pixelPoint.x(); - newValue = mValueAxis->pixelToCoord(pixelPoint.y()); - } - } else - { - // no axis given, basically the same as if mAnchorType were atNone - newKey = pixelPoint.x(); - newValue = pixelPoint.y(); - } - setCoords(newKey, newValue); - break; - } - } -} - - -// ================================================================================ -// =================== QCPItemStraightLine -// ================================================================================ - -/*! \class QCPItemStraightLine - \brief A straight line that spans infinitely in both directions - - \image html QCPItemStraightLine.png "Straight line example. Blue dotted circles are anchors, solid blue discs are positions." - - It has two positions, \a point1 and \a point2, which define the straight line. -*/ - -/*! - Creates a straight line item and sets default values. - - The constructed item can be added to the plot with QCustomPlot::addItem. -*/ -QCPItemStraightLine::QCPItemStraightLine(QCustomPlot *parentPlot) : - QCPAbstractItem(parentPlot), - point1(createPosition("point1")), - point2(createPosition("point2")) -{ - point1->setCoords(0, 0); - point2->setCoords(1, 1); - - setPen(QPen(Qt::black)); - setSelectedPen(QPen(Qt::blue,2)); -} - -QCPItemStraightLine::~QCPItemStraightLine() -{ -} - -/*! - Sets the pen that will be used to draw the line - - \see setSelectedPen -*/ -void QCPItemStraightLine::setPen(const QPen &pen) -{ - mPen = pen; -} - -/*! - Sets the pen that will be used to draw the line when selected - - \see setPen, setSelected -*/ -void QCPItemStraightLine::setSelectedPen(const QPen &pen) -{ - mSelectedPen = pen; -} - -/* inherits documentation from base class */ -double QCPItemStraightLine::selectTest(const QPointF &pos) const -{ - if (!mVisible) - return -1; - - return distToStraightLine(QVector2D(point1->pixelPoint()), QVector2D(point2->pixelPoint()-point1->pixelPoint()), QVector2D(pos)); -} - -/* inherits documentation from base class */ -void QCPItemStraightLine::draw(QCPPainter *painter) -{ - QVector2D start(point1->pixelPoint()); - QVector2D end(point2->pixelPoint()); - // get visible segment of straight line inside clipRect: - double clipPad = mainPen().widthF(); - QLineF line = getRectClippedStraightLine(start, end-start, clipRect().adjusted(-clipPad, -clipPad, clipPad, clipPad)); - // paint visible segment, if existent: - if (!line.isNull()) - { - painter->setPen(mainPen()); - painter->drawLine(line); - } -} - -/*! \internal - - finds the shortest distance of \a point to the straight line defined by the base point \a - base and the direction vector \a vec. - - This is a helper function for \ref selectTest. -*/ -double QCPItemStraightLine::distToStraightLine(const QVector2D &base, const QVector2D &vec, const QVector2D &point) const -{ - return qAbs((base.y()-point.y())*vec.x()-(base.x()-point.x())*vec.y())/vec.length(); -} - -/*! \internal - - Returns the section of the straight line defined by \a base and direction vector \a - vec, that is visible in the specified \a rect. - - This is a helper function for \ref draw. -*/ -QLineF QCPItemStraightLine::getRectClippedStraightLine(const QVector2D &base, const QVector2D &vec, const QRect &rect) const -{ - double bx, by; - double gamma; - QLineF result; - if (vec.x() == 0 && vec.y() == 0) - return result; - if (qFuzzyIsNull(vec.x())) // line is vertical - { - // check top of rect: - bx = rect.left(); - by = rect.top(); - gamma = base.x()-bx + (by-base.y())*vec.x()/vec.y(); - if (gamma >= 0 && gamma <= rect.width()) - result.setLine(bx+gamma, rect.top(), bx+gamma, rect.bottom()); // no need to check bottom because we know line is vertical - } else if (qFuzzyIsNull(vec.y())) // line is horizontal - { - // check left of rect: - bx = rect.left(); - by = rect.top(); - gamma = base.y()-by + (bx-base.x())*vec.y()/vec.x(); - if (gamma >= 0 && gamma <= rect.height()) - result.setLine(rect.left(), by+gamma, rect.right(), by+gamma); // no need to check right because we know line is horizontal - } else // line is skewed - { - QList pointVectors; - // check top of rect: - bx = rect.left(); - by = rect.top(); - gamma = base.x()-bx + (by-base.y())*vec.x()/vec.y(); - if (gamma >= 0 && gamma <= rect.width()) - pointVectors.append(QVector2D(bx+gamma, by)); - // check bottom of rect: - bx = rect.left(); - by = rect.bottom(); - gamma = base.x()-bx + (by-base.y())*vec.x()/vec.y(); - if (gamma >= 0 && gamma <= rect.width()) - pointVectors.append(QVector2D(bx+gamma, by)); - // check left of rect: - bx = rect.left(); - by = rect.top(); - gamma = base.y()-by + (bx-base.x())*vec.y()/vec.x(); - if (gamma >= 0 && gamma <= rect.height()) - pointVectors.append(QVector2D(bx, by+gamma)); - // check right of rect: - bx = rect.right(); - by = rect.top(); - gamma = base.y()-by + (bx-base.x())*vec.y()/vec.x(); - if (gamma >= 0 && gamma <= rect.height()) - pointVectors.append(QVector2D(bx, by+gamma)); - - // evaluate points: - if (pointVectors.size() == 2) - { - result.setPoints(pointVectors.at(0).toPointF(), pointVectors.at(1).toPointF()); - } else if (pointVectors.size() > 2) - { - // line probably goes through corner of rect, and we got two points there. single out the point pair with greatest distance: - double distSqrMax = 0; - QVector2D pv1, pv2; - for (int i=0; i distSqrMax) - { - pv1 = pointVectors.at(i); - pv2 = pointVectors.at(k); - distSqrMax = distSqr; - } - } - } - result.setPoints(pv1.toPointF(), pv2.toPointF()); - } - } - return result; -} - -/*! \internal - - Returns the pen that should be used for drawing lines. Returns mPen when the - item is not selected and mSelectedPen when it is. -*/ -QPen QCPItemStraightLine::mainPen() const -{ - return mSelected ? mSelectedPen : mPen; -} - - -// ================================================================================ -// =================== QCPItemLine -// ================================================================================ - -/*! \class QCPItemLine - \brief A line from one point to another - - \image html QCPItemLine.png "Line example. Blue dotted circles are anchors, solid blue discs are positions." - - It has two positions, \a start and \a end, which define the end points of the line. - - With \ref setHead and \ref setTail you may set different line ending styles, e.g. to create an arrow. -*/ - -/*! - Creates a line item and sets default values. - - The constructed item can be added to the plot with QCustomPlot::addItem. -*/ -QCPItemLine::QCPItemLine(QCustomPlot *parentPlot) : - QCPAbstractItem(parentPlot), - start(createPosition("start")), - end(createPosition("end")) -{ - start->setCoords(0, 0); - end->setCoords(1, 1); - - setPen(QPen(Qt::black)); - setSelectedPen(QPen(Qt::blue,2)); -} - -QCPItemLine::~QCPItemLine() -{ -} - -/*! - Sets the pen that will be used to draw the line - - \see setSelectedPen -*/ -void QCPItemLine::setPen(const QPen &pen) -{ - mPen = pen; -} - -/*! - Sets the pen that will be used to draw the line when selected - - \see setPen, setSelected -*/ -void QCPItemLine::setSelectedPen(const QPen &pen) -{ - mSelectedPen = pen; -} - -/*! - Sets the line ending style of the head. The head corresponds to the \a end position. - - Note that due to the overloaded QCPLineEnding constructor, you may directly specify - a QCPLineEnding::EndingStyle here, e.g. \code setHead(QCPLineEnding::esSpikeArrow) \endcode - - \see setTail -*/ -void QCPItemLine::setHead(const QCPLineEnding &head) -{ - mHead = head; -} - -/*! - Sets the line ending style of the tail. The tail corresponds to the \a start position. - - Note that due to the overloaded QCPLineEnding constructor, you may directly specify - a QCPLineEnding::EndingStyle here, e.g. \code setTail(QCPLineEnding::esSpikeArrow) \endcode - - \see setHead -*/ -void QCPItemLine::setTail(const QCPLineEnding &tail) -{ - mTail = tail; -} - -/* inherits documentation from base class */ -double QCPItemLine::selectTest(const QPointF &pos) const -{ - if (!mVisible) - return -1; - - return qSqrt(distSqrToLine(start->pixelPoint(), end->pixelPoint(), pos)); -} - -/* inherits documentation from base class */ -void QCPItemLine::draw(QCPPainter *painter) -{ - QVector2D startVec(start->pixelPoint()); - QVector2D endVec(end->pixelPoint()); - if (startVec.toPoint() == endVec.toPoint()) - return; - // get visible segment of straight line inside clipRect: - double clipPad = qMax(mHead.boundingDistance(), mTail.boundingDistance()); - clipPad = qMax(clipPad, mainPen().widthF()); - QLineF line = getRectClippedLine(startVec, endVec, clipRect().adjusted(-clipPad, -clipPad, clipPad, clipPad)); - // paint visible segment, if existent: - if (!line.isNull()) - { - painter->setPen(mainPen()); - painter->drawLine(line); - painter->setBrush(Qt::SolidPattern); - if (mTail.style() != QCPLineEnding::esNone) - mTail.draw(painter, startVec, startVec-endVec); - if (mHead.style() != QCPLineEnding::esNone) - mHead.draw(painter, endVec, endVec-startVec); - } -} - -/*! \internal - - Returns the section of the line defined by \a start and \a end, that is visible in the specified - \a rect. - - This is a helper function for \ref draw. -*/ -QLineF QCPItemLine::getRectClippedLine(const QVector2D &start, const QVector2D &end, const QRect &rect) const -{ - bool containsStart = rect.contains(start.x(), start.y()); - bool containsEnd = rect.contains(end.x(), end.y()); - if (containsStart && containsEnd) - return QLineF(start.toPointF(), end.toPointF()); - - QVector2D base = start; - QVector2D vec = end-start; - double bx, by; - double gamma, mu; - QLineF result; - QList pointVectors; - - if (!qFuzzyIsNull(vec.y())) // line is not horizontal - { - // check top of rect: - bx = rect.left(); - by = rect.top(); - mu = (by-base.y())/vec.y(); - if (mu >= 0 && mu <= 1) - { - gamma = base.x()-bx + mu*vec.x(); - if (gamma >= 0 && gamma <= rect.width()) - pointVectors.append(QVector2D(bx+gamma, by)); - } - // check bottom of rect: - bx = rect.left(); - by = rect.bottom(); - mu = (by-base.y())/vec.y(); - if (mu >= 0 && mu <= 1) - { - gamma = base.x()-bx + mu*vec.x(); - if (gamma >= 0 && gamma <= rect.width()) - pointVectors.append(QVector2D(bx+gamma, by)); - } - } - if (!qFuzzyIsNull(vec.x())) // line is not vertical - { - // check left of rect: - bx = rect.left(); - by = rect.top(); - mu = (bx-base.x())/vec.x(); - if (mu >= 0 && mu <= 1) - { - gamma = base.y()-by + mu*vec.y(); - if (gamma >= 0 && gamma <= rect.height()) - pointVectors.append(QVector2D(bx, by+gamma)); - } - // check right of rect: - bx = rect.right(); - by = rect.top(); - mu = (bx-base.x())/vec.x(); - if (mu >= 0 && mu <= 1) - { - gamma = base.y()-by + mu*vec.y(); - if (gamma >= 0 && gamma <= rect.height()) - pointVectors.append(QVector2D(bx, by+gamma)); - } - } - - if (containsStart) - pointVectors.append(start); - if (containsEnd) - pointVectors.append(end); - - // evaluate points: - if (pointVectors.size() == 2) - { - result.setPoints(pointVectors.at(0).toPointF(), pointVectors.at(1).toPointF()); - } else if (pointVectors.size() > 2) - { - // line probably goes through corner of rect, and we got two points there. single out the point pair with greatest distance: - double distSqrMax = 0; - QVector2D pv1, pv2; - for (int i=0; i distSqrMax) - { - pv1 = pointVectors.at(i); - pv2 = pointVectors.at(k); - distSqrMax = distSqr; - } - } - } - result.setPoints(pv1.toPointF(), pv2.toPointF()); - } - return result; -} - -/*! \internal - - Returns the pen that should be used for drawing lines. Returns mPen when the - item is not selected and mSelectedPen when it is. -*/ -QPen QCPItemLine::mainPen() const -{ - return mSelected ? mSelectedPen : mPen; -} - - -// ================================================================================ -// =================== QCPItemEllipse -// ================================================================================ - -/*! \class QCPItemEllipse - \brief An ellipse - - \image html QCPItemEllipse.png "Ellipse example. Blue dotted circles are anchors, solid blue discs are positions." - - It has two positions, \a topLeft and \a bottomRight, which define the rect the ellipse will be drawn in. -*/ - -/*! - Creates an ellipse item and sets default values. - - The constructed item can be added to the plot with QCustomPlot::addItem. -*/ -QCPItemEllipse::QCPItemEllipse(QCustomPlot *parentPlot) : - QCPAbstractItem(parentPlot), - topLeft(createPosition("topLeft")), - bottomRight(createPosition("bottomRight")), - topLeftRim(createAnchor("topLeftRim", aiTopLeftRim)), - top(createAnchor("top", aiTop)), - topRightRim(createAnchor("topRightRim", aiTopRightRim)), - right(createAnchor("right", aiRight)), - bottomRightRim(createAnchor("bottomRightRim", aiBottomRightRim)), - bottom(createAnchor("bottom", aiBottom)), - bottomLeftRim(createAnchor("bottomLeftRim", aiBottomLeftRim)), - left(createAnchor("left", aiLeft)) -{ - topLeft->setCoords(0, 1); - bottomRight->setCoords(1, 0); - - setPen(QPen(Qt::black)); - setSelectedPen(QPen(Qt::blue, 2)); - setBrush(Qt::NoBrush); - setSelectedBrush(Qt::NoBrush); -} - -QCPItemEllipse::~QCPItemEllipse() -{ -} - -/*! - Sets the pen that will be used to draw the line of the ellipse - - \see setSelectedPen, setBrush -*/ -void QCPItemEllipse::setPen(const QPen &pen) -{ - mPen = pen; -} - -/*! - Sets the pen that will be used to draw the line of the ellipse when selected - - \see setPen, setSelected -*/ -void QCPItemEllipse::setSelectedPen(const QPen &pen) -{ - mSelectedPen = pen; -} - -/*! - Sets the brush that will be used to fill the ellipse. To disable filling, set \a brush to - Qt::NoBrush. - - \see setSelectedBrush, setPen -*/ -void QCPItemEllipse::setBrush(const QBrush &brush) -{ - mBrush = brush; -} - -/*! - Sets the brush that will be used to fill the ellipse when selected. To disable filling, set \a - brush to Qt::NoBrush. - - \see setBrush -*/ -void QCPItemEllipse::setSelectedBrush(const QBrush &brush) -{ - mSelectedBrush = brush; -} - -/* inherits documentation from base class */ -double QCPItemEllipse::selectTest(const QPointF &pos) const -{ - double result = -1; - QPointF p1 = topLeft->pixelPoint(); - QPointF p2 = bottomRight->pixelPoint(); - QPointF center((p1+p2)/2.0); - double a = qAbs(p1.x()-p2.x())/2.0; - double b = qAbs(p1.y()-p2.y())/2.0; - double x = pos.x()-center.x(); - double y = pos.y()-center.y(); - - // distance to border: - double c = 1.0/qSqrt(x*x/(a*a)+y*y/(b*b)); - result = qAbs(c-1)*qSqrt(x*x+y*y); - // filled ellipse, allow click inside to count as hit: - if (result > mParentPlot->selectionTolerance()*0.99 && mBrush.style() != Qt::NoBrush && mBrush.color().alpha() != 0) - { - if (x*x/(a*a) + y*y/(b*b) <= 1) - result = mParentPlot->selectionTolerance()*0.99; - } - return result; -} - -/* inherits documentation from base class */ -void QCPItemEllipse::draw(QCPPainter *painter) -{ - QPointF p1 = topLeft->pixelPoint(); - QPointF p2 = bottomRight->pixelPoint(); - if (p1.toPoint() == p2.toPoint()) - return; - QRectF ellipseRect = QRectF(p1, p2).normalized(); - QRect clip = clipRect().adjusted(-mainPen().widthF(), -mainPen().widthF(), mainPen().widthF(), mainPen().widthF()); - if (ellipseRect.intersects(clip)) // only draw if bounding rect of ellipse is visible in cliprect - { - painter->setPen(mainPen()); - painter->setBrush(mainBrush()); - try - { - painter->drawEllipse(ellipseRect); - } catch (...) - { - qDebug() << Q_FUNC_INFO << "Item too large for memory, setting invisible"; - setVisible(false); - } - } -} - -/* inherits documentation from base class */ -QPointF QCPItemEllipse::anchorPixelPoint(int anchorId) const -{ - QRectF rect = QRectF(topLeft->pixelPoint(), bottomRight->pixelPoint()); - switch (anchorId) - { - case aiTopLeftRim: return rect.center()+(rect.topLeft()-rect.center())*1/qSqrt(2); - case aiTop: return (rect.topLeft()+rect.topRight())*0.5; - case aiTopRightRim: return rect.center()+(rect.topRight()-rect.center())*1/qSqrt(2); - case aiRight: return (rect.topRight()+rect.bottomRight())*0.5; - case aiBottomRightRim: return rect.center()+(rect.bottomRight()-rect.center())*1/qSqrt(2); - case aiBottom: return (rect.bottomLeft()+rect.bottomRight())*0.5; - case aiBottomLeftRim: return rect.center()+(rect.bottomLeft()-rect.center())*1/qSqrt(2); - case aiLeft: return (rect.topLeft()+rect.bottomLeft())*0.5;; - } - - qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; - return QPointF(); -} - -/*! \internal - - Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected - and mSelectedPen when it is. -*/ -QPen QCPItemEllipse::mainPen() const -{ - return mSelected ? mSelectedPen : mPen; -} - -/*! \internal - - Returns the brush that should be used for drawing fills of the item. Returns mBrush when the item - is not selected and mSelectedBrush when it is. -*/ -QBrush QCPItemEllipse::mainBrush() const -{ - return mSelected ? mSelectedBrush : mBrush; -} - - -// ================================================================================ -// =================== QCPItemRect -// ================================================================================ - -/*! \class QCPItemRect - \brief A rectangle - - \image html QCPItemRect.png "Rectangle example. Blue dotted circles are anchors, solid blue discs are positions." - - It has two positions, \a topLeft and \a bottomRight, which define the rectangle. -*/ - -/*! - Creates a rectangle item and sets default values. - - The constructed item can be added to the plot with QCustomPlot::addItem. -*/ -QCPItemRect::QCPItemRect(QCustomPlot *parentPlot) : - QCPAbstractItem(parentPlot), - topLeft(createPosition("topLeft")), - bottomRight(createPosition("bottomRight")), - top(createAnchor("top", aiTop)), - topRight(createAnchor("topRight", aiTopRight)), - right(createAnchor("right", aiRight)), - bottom(createAnchor("bottom", aiBottom)), - bottomLeft(createAnchor("bottomLeft", aiBottomLeft)), - left(createAnchor("left", aiLeft)) -{ - topLeft->setCoords(0, 1); - bottomRight->setCoords(1, 0); - - setPen(QPen(Qt::black)); - setSelectedPen(QPen(Qt::blue,2)); - setBrush(Qt::NoBrush); - setSelectedBrush(Qt::NoBrush); -} - -QCPItemRect::~QCPItemRect() -{ -} - -/*! - Sets the pen that will be used to draw the line of the rectangle - - \see setSelectedPen, setBrush -*/ -void QCPItemRect::setPen(const QPen &pen) -{ - mPen = pen; -} - -/*! - Sets the pen that will be used to draw the line of the rectangle when selected - - \see setPen, setSelected -*/ -void QCPItemRect::setSelectedPen(const QPen &pen) -{ - mSelectedPen = pen; -} - -/*! - Sets the brush that will be used to fill the rectangle. To disable filling, set \a brush to - Qt::NoBrush. - - \see setSelectedBrush, setPen -*/ -void QCPItemRect::setBrush(const QBrush &brush) -{ - mBrush = brush; -} - -/*! - Sets the brush that will be used to fill the rectangle when selected. To disable filling, set \a - brush to Qt::NoBrush. - - \see setBrush -*/ -void QCPItemRect::setSelectedBrush(const QBrush &brush) -{ - mSelectedBrush = brush; -} - -/* inherits documentation from base class */ -double QCPItemRect::selectTest(const QPointF &pos) const -{ - if (!mVisible) - return -1; - - QRectF rect = QRectF(topLeft->pixelPoint(), bottomRight->pixelPoint()).normalized(); - bool filledRect = mBrush.style() != Qt::NoBrush && mBrush.color().alpha() != 0; - return rectSelectTest(rect, pos, filledRect); -} - -/* inherits documentation from base class */ -void QCPItemRect::draw(QCPPainter *painter) -{ - QPointF p1 = topLeft->pixelPoint(); - QPointF p2 = bottomRight->pixelPoint(); - if (p1.toPoint() == p2.toPoint()) - return; - QRectF rect = QRectF(p1, p2).normalized(); - double clipPad = mainPen().widthF(); - QRectF boundingRect = rect.adjusted(-clipPad, -clipPad, clipPad, clipPad); - if (boundingRect.intersects(clipRect())) // only draw if bounding rect of rect item is visible in cliprect - { - painter->setPen(mainPen()); - painter->setBrush(mainBrush()); - painter->drawRect(rect); - } -} - -/* inherits documentation from base class */ -QPointF QCPItemRect::anchorPixelPoint(int anchorId) const -{ - QRectF rect = QRectF(topLeft->pixelPoint(), bottomRight->pixelPoint()); - switch (anchorId) - { - case aiTop: return (rect.topLeft()+rect.topRight())*0.5; - case aiTopRight: return rect.topRight(); - case aiRight: return (rect.topRight()+rect.bottomRight())*0.5; - case aiBottom: return (rect.bottomLeft()+rect.bottomRight())*0.5; - case aiBottomLeft: return rect.bottomLeft(); - case aiLeft: return (rect.topLeft()+rect.bottomLeft())*0.5;; - } - - qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; - return QPointF(); -} - -/*! \internal - - Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected - and mSelectedPen when it is. -*/ -QPen QCPItemRect::mainPen() const -{ - return mSelected ? mSelectedPen : mPen; -} - -/*! \internal - - Returns the brush that should be used for drawing fills of the item. Returns mBrush when the item - is not selected and mSelectedBrush when it is. -*/ -QBrush QCPItemRect::mainBrush() const -{ - return mSelected ? mSelectedBrush : mBrush; -} - - -// ================================================================================ -// =================== QCPItemPixmap -// ================================================================================ - -/*! \class QCPItemPixmap - \brief An arbitrary pixmap - - \image html QCPItemPixmap.png "Pixmap example. Blue dotted circles are anchors, solid blue discs are positions." - - It has two positions, \a topLeft and \a bottomRight, which define the rectangle the pixmap will - be drawn in. Depending on the scale setting (\ref setScaled), the pixmap will be either scaled to - fit the rectangle or be drawn aligned to the topLeft position. - - If scaling is enabled and \a topLeft is further to the bottom/right than \a bottomRight (as shown - on the right side of the example image), the pixmap will be flipped in the respective - orientations. -*/ - -/*! - Creates a rectangle item and sets default values. - - The constructed item can be added to the plot with QCustomPlot::addItem. -*/ -QCPItemPixmap::QCPItemPixmap(QCustomPlot *parentPlot) : - QCPAbstractItem(parentPlot), - topLeft(createPosition("topLeft")), - bottomRight(createPosition("bottomRight")), - top(createAnchor("top", aiTop)), - topRight(createAnchor("topRight", aiTopRight)), - right(createAnchor("right", aiRight)), - bottom(createAnchor("bottom", aiBottom)), - bottomLeft(createAnchor("bottomLeft", aiBottomLeft)), - left(createAnchor("left", aiLeft)) -{ - topLeft->setCoords(0, 1); - bottomRight->setCoords(1, 0); - - setPen(Qt::NoPen); - setSelectedPen(QPen(Qt::blue)); - setScaled(false, Qt::KeepAspectRatio); -} - -QCPItemPixmap::~QCPItemPixmap() -{ -} - -/*! - Sets the pixmap that will be displayed. -*/ -void QCPItemPixmap::setPixmap(const QPixmap &pixmap) -{ - mPixmap = pixmap; -} - -/*! - Sets whether the pixmap will be scaled to fit the rectangle defined by the \a topLeft and \a - bottomRight positions. -*/ -void QCPItemPixmap::setScaled(bool scaled, Qt::AspectRatioMode aspectRatioMode) -{ - mScaled = scaled; - mAspectRatioMode = aspectRatioMode; - updateScaledPixmap(); -} - -/*! - Sets the pen that will be used to draw a border around the pixmap. - - \see setSelectedPen, setBrush -*/ -void QCPItemPixmap::setPen(const QPen &pen) -{ - mPen = pen; -} - -/*! - Sets the pen that will be used to draw a border around the pixmap when selected - - \see setPen, setSelected -*/ -void QCPItemPixmap::setSelectedPen(const QPen &pen) -{ - mSelectedPen = pen; -} - -/* inherits documentation from base class */ -double QCPItemPixmap::selectTest(const QPointF &pos) const -{ - if (!mVisible) - return -1; - - return rectSelectTest(getFinalRect(), pos, true); -} - -/* inherits documentation from base class */ -void QCPItemPixmap::draw(QCPPainter *painter) -{ - bool flipHorz = false; - bool flipVert = false; - QRect rect = getFinalRect(&flipHorz, &flipVert); - double clipPad = mainPen().style() == Qt::NoPen ? 0 : mainPen().widthF(); - QRect boundingRect = rect.adjusted(-clipPad, -clipPad, clipPad, clipPad); - if (boundingRect.intersects(clipRect())) - { - updateScaledPixmap(rect, flipHorz, flipVert); - painter->drawPixmap(rect.topLeft(), mScaled ? mScaledPixmap : mPixmap); - QPen pen = mainPen(); - if (pen.style() != Qt::NoPen) - { - painter->setPen(pen); - painter->setBrush(Qt::NoBrush); - painter->drawRect(rect); - } - } -} - -/* inherits documentation from base class */ -QPointF QCPItemPixmap::anchorPixelPoint(int anchorId) const -{ - bool flipHorz; - bool flipVert; - QRect rect = getFinalRect(&flipHorz, &flipVert); - // we actually want denormal rects (negative width/height) here, so restore - // the flipped state: - if (flipHorz) - rect.adjust(rect.width(), 0, -rect.width(), 0); - if (flipVert) - rect.adjust(0, rect.height(), 0, -rect.height()); - - switch (anchorId) - { - case aiTop: return (rect.topLeft()+rect.topRight())*0.5; - case aiTopRight: return rect.topRight(); - case aiRight: return (rect.topRight()+rect.bottomRight())*0.5; - case aiBottom: return (rect.bottomLeft()+rect.bottomRight())*0.5; - case aiBottomLeft: return rect.bottomLeft(); - case aiLeft: return (rect.topLeft()+rect.bottomLeft())*0.5;; - } - - qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; - return QPointF(); -} - -/*! \internal - - Creates the buffered scaled image (\a mScaledPixmap) to fit the specified \a finalRect. The - parameters \a flipHorz and \a flipVert control whether the resulting image shall be flipped - horizontally or vertically. (This is used when \a topLeft is further to the bottom/right than \a - bottomRight.) - - This function only creates the scaled pixmap when the buffered pixmap has a different size than - the expected result, so calling this function repeatedly, e.g. in the \ref draw function, does - not cause expensive rescaling every time. - - If scaling is disabled, sets mScaledPixmap to a null QPixmap. -*/ -void QCPItemPixmap::updateScaledPixmap(QRect finalRect, bool flipHorz, bool flipVert) -{ - if (mScaled) - { - if (finalRect.isNull()) - finalRect = getFinalRect(&flipHorz, &flipVert); - if (finalRect.size() != mScaledPixmap.size()) - { - mScaledPixmap = mPixmap.scaled(finalRect.size(), mAspectRatioMode, Qt::SmoothTransformation); - if (flipHorz || flipVert) - mScaledPixmap = QPixmap::fromImage(mScaledPixmap.toImage().mirrored(flipHorz, flipVert)); - } - } else if (!mScaledPixmap.isNull()) - mScaledPixmap = QPixmap(); -} - -/*! \internal - - Returns the final (tight) rect the pixmap is drawn in, depending on the current item positions - and scaling settings. - - The output parameters \a flippedHorz and \a flippedVert return whether the pixmap should be drawn - flipped horizontally or vertically in the returned rect. (The returned rect itself is always - normalized, i.e. the top left corner of the rect is actually further to the top/left than the - bottom right corner). This is the case when the item position \a topLeft is further to the - bottom/right than \a bottomRight. - - If scaling is disabled, returns a rect with size of the original pixmap and the top left corner - aligned with the item position \a topLeft. The position \a bottomRight is ignored. -*/ -QRect QCPItemPixmap::getFinalRect(bool *flippedHorz, bool *flippedVert) const -{ - QRect result; - bool flipHorz = false; - bool flipVert = false; - QPoint p1 = topLeft->pixelPoint().toPoint(); - QPoint p2 = bottomRight->pixelPoint().toPoint(); - if (p1 == p2) - return QRect(p1, QSize(0, 0)); - if (mScaled) - { - QSize newSize = QSize(p2.x()-p1.x(), p2.y()-p1.y()); - QPoint topLeft = p1; - if (newSize.width() < 0) - { - flipHorz = true; - newSize.rwidth() *= -1; - topLeft.setX(p2.x()); - } - if (newSize.height() < 0) - { - flipVert = true; - newSize.rheight() *= -1; - topLeft.setY(p2.y()); - } - QSize scaledSize = mPixmap.size(); - scaledSize.scale(newSize, mAspectRatioMode); - result = QRect(topLeft, scaledSize); - } else - { - result = QRect(p1, mPixmap.size()); - } - if (flippedHorz) - *flippedHorz = flipHorz; - if (flippedVert) - *flippedVert = flipVert; - return result; -} - -/*! \internal - - Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected - and mSelectedPen when it is. -*/ -QPen QCPItemPixmap::mainPen() const -{ - return mSelected ? mSelectedPen : mPen; -} - - -// ================================================================================ -// =================== QCPItemText -// ================================================================================ - -/*! \class QCPItemText - \brief A text label - - \image html QCPItemText.png "Text example. Blue dotted circles are anchors, solid blue discs are positions." - - Its position is defined by the member \a position and the setting of \ref setPositionAlignment. - The latter controls which part of the text rect shall be aligned with \a position. - - The text alignment itself (i.e. left, center, right) can be controlled with \ref - setTextAlignment. - - The text may be rotated around the \a position point with \ref setRotation. -*/ - -/*! - Creates a text item and sets default values. - - The constructed item can be added to the plot with QCustomPlot::addItem. -*/ -QCPItemText::QCPItemText(QCustomPlot *parentPlot) : - QCPAbstractItem(parentPlot), - position(createPosition("position")), - topLeft(createAnchor("topLeft", aiTopLeft)), - top(createAnchor("top", aiTop)), - topRight(createAnchor("topRight", aiTopRight)), - right(createAnchor("right", aiRight)), - bottomRight(createAnchor("bottomRight", aiBottomRight)), - bottom(createAnchor("bottom", aiBottom)), - bottomLeft(createAnchor("bottomLeft", aiBottomLeft)), - left(createAnchor("left", aiLeft)) -{ - position->setCoords(0, 0); - - setRotation(0); - setTextAlignment(Qt::AlignTop|Qt::AlignHCenter); - setPositionAlignment(Qt::AlignCenter); - setText("text"); - - setPen(Qt::NoPen); - setSelectedPen(Qt::NoPen); - setBrush(Qt::NoBrush); - setSelectedBrush(Qt::NoBrush); - setColor(Qt::black); - setSelectedColor(Qt::blue); -} - -QCPItemText::~QCPItemText() -{ -} - -/*! - Sets the color of the text. -*/ -void QCPItemText::setColor(const QColor &color) -{ - mColor = color; -} - -/*! - Sets the color of the text that will be used when the item is selected. -*/ -void QCPItemText::setSelectedColor(const QColor &color) -{ - mSelectedColor = color; -} - -/*! - Sets the pen that will be used do draw a rectangular border around the text. To disable the - border, set \a pen to Qt::NoPen. - - \see setSelectedPen, setBrush, setPadding -*/ -void QCPItemText::setPen(const QPen &pen) -{ - mPen = pen; -} - -/*! - Sets the pen that will be used do draw a rectangular border around the text, when the item is - selected. To disable the border, set \a pen to Qt::NoPen. - - \see setPen -*/ -void QCPItemText::setSelectedPen(const QPen &pen) -{ - mSelectedPen = pen; -} - -/*! - Sets the brush that will be used do fill the background of the text. To disable the - background, set \a brush to Qt::NoBrush. - - \see setSelectedBrush, setPen, setPadding -*/ -void QCPItemText::setBrush(const QBrush &brush) -{ - mBrush = brush; -} - -/*! - Sets the brush that will be used do fill the background of the text, when the item is selected. To disable the - background, set \a brush to Qt::NoBrush. - - \see setBrush -*/ -void QCPItemText::setSelectedBrush(const QBrush &brush) -{ - mSelectedBrush = brush; -} - -/*! - Sets the font of the text. - - \see setSelectedFont, setColor -*/ -void QCPItemText::setFont(const QFont &font) -{ - mFont = font; -} - -/*! - Sets the font of the text that will be used when the item is selected. - - \see setFont -*/ -void QCPItemText::setSelectedFont(const QFont &font) -{ - mSelectedFont = font; -} - -/*! - Sets the text that will be displayed. Multi-line texts are supported by inserting a line break - character, e.g. '\n'. - - \see setFont, setColor, setTextAlignment -*/ -void QCPItemText::setText(const QString &text) -{ - mText = text; -} - -/*! - Sets which point of the text rect shall be aligned with \a position. - - Examples: - \li If \a alignment is Qt::AlignHCenter | Qt::AlignTop, the text will be positioned such - that the top of the text rect will be horizontally centered on \a position. - \li If \a alignment is Qt::AlignLeft | Qt::AlignBottom, \a position will indicate the - bottom left corner of the text rect. - - If you want to control the alignment of (multi-lined) text within the text rect, use \ref - setTextAlignment. -*/ -void QCPItemText::setPositionAlignment(Qt::Alignment alignment) -{ - mPositionAlignment = alignment; -} - -/*! - Controls how (multi-lined) text is aligned inside the text rect (typically Qt::AlignLeft, Qt::AlignCenter or Qt::AlignRight). -*/ -void QCPItemText::setTextAlignment(Qt::Alignment alignment) -{ - mTextAlignment = alignment; -} - -/*! - Sets the angle in degrees by which the text (and the text rectangle, if visible) will be rotated - around \a position. -*/ -void QCPItemText::setRotation(double degrees) -{ - mRotation = degrees; -} - -/*! - Sets the distance between the border of the text rectangle and the text. The appearance (and - visibility) of the text rectangle can be controlled with \ref setPen and \ref setBrush. -*/ -void QCPItemText::setPadding(const QMargins &padding) -{ - mPadding = padding; -} - -/* inherits documentation from base class */ -double QCPItemText::selectTest(const QPointF &pos) const -{ - if (!mVisible) - return -1; - - // The rect may be rotated, so we transform the actual clicked pos to the rotated - // coordinate system, wo we can use the normal rectSelectTest function for non-rotated rects: - QPointF positionPixels(position->pixelPoint()); - QTransform inputTransform; - inputTransform.translate(positionPixels.x(), positionPixels.y()); - inputTransform.rotate(-mRotation); - inputTransform.translate(-positionPixels.x(), -positionPixels.y()); - QPointF rotatedPos = inputTransform.map(pos); - QFontMetrics fontMetrics(mFont); - QRect textRect = fontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip|mTextAlignment, mText); - QRect textBoxRect = textRect.adjusted(-mPadding.left(), -mPadding.top(), mPadding.right(), mPadding.bottom()); - QPointF textPos = getTextDrawPoint(positionPixels, textBoxRect, mPositionAlignment); - textBoxRect.moveTopLeft(textPos.toPoint()); - - return rectSelectTest(textBoxRect, rotatedPos, true); -} - -/* inherits documentation from base class */ -void QCPItemText::draw(QCPPainter *painter) -{ - QPointF pos(position->pixelPoint()); - QTransform transform; - transform.translate(pos.x(), pos.y()); - if (!qFuzzyIsNull(mRotation)) - transform.rotate(mRotation); - painter->setFont(mainFont()); - QRect textRect = painter->fontMetrics().boundingRect(0, 0, 0, 0, Qt::TextDontClip|mTextAlignment, mText); - QRect textBoxRect = textRect.adjusted(-mPadding.left(), -mPadding.top(), mPadding.right(), mPadding.bottom()); - QPointF textPos = getTextDrawPoint(QPointF(0, 0), textBoxRect, mPositionAlignment); // 0, 0 because the transform does the translation - textRect.moveTopLeft(textPos.toPoint()+QPoint(mPadding.left(), mPadding.top())); - textBoxRect.moveTopLeft(textPos.toPoint()); - double clipPad = mainPen().widthF(); - QRect boundingRect = textBoxRect.adjusted(-clipPad, -clipPad, clipPad, clipPad); - if (transform.mapRect(boundingRect).intersects(clipRect())) - { - painter->setTransform(transform); - if ((mainBrush().style() != Qt::NoBrush && mainBrush().color().alpha() != 0) || - (mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0)) - { - painter->setPen(mainPen()); - painter->setBrush(mainBrush()); - painter->drawRect(textBoxRect); - } - painter->setBrush(Qt::NoBrush); - painter->setPen(QPen(mainColor())); - painter->drawText(textRect, Qt::TextDontClip|mTextAlignment, mText); - } -} - -/* inherits documentation from base class */ -QPointF QCPItemText::anchorPixelPoint(int anchorId) const -{ - // get actual rect points (pretty much copied from draw function): - QPointF pos(position->pixelPoint()); - QTransform transform; - transform.translate(pos.x(), pos.y()); - if (!qFuzzyIsNull(mRotation)) - transform.rotate(mRotation); - QFontMetrics fontMetrics(mainFont()); - QRect textRect = fontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip|mTextAlignment, mText); - QRectF textBoxRect = textRect.adjusted(-mPadding.left(), -mPadding.top(), mPadding.right(), mPadding.bottom()); - QPointF textPos = getTextDrawPoint(QPointF(0, 0), textBoxRect, mPositionAlignment); // 0, 0 because the transform does the translation - textBoxRect.moveTopLeft(textPos.toPoint()); - QPolygonF rectPoly = transform.map(QPolygonF(textBoxRect)); - - switch (anchorId) - { - case aiTopLeft: return rectPoly.at(0); - case aiTop: return (rectPoly.at(0)+rectPoly.at(1))*0.5; - case aiTopRight: return rectPoly.at(1); - case aiRight: return (rectPoly.at(1)+rectPoly.at(2))*0.5; - case aiBottomRight: return rectPoly.at(2); - case aiBottom: return (rectPoly.at(2)+rectPoly.at(3))*0.5; - case aiBottomLeft: return rectPoly.at(3); - case aiLeft: return (rectPoly.at(3)+rectPoly.at(0))*0.5; - } - - qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; - return QPointF(); -} - -/*! \internal - - Returns the point that must be given to the QPainter::drawText function (which expects the top - left point of the text rect), according to the position \a pos, the text bounding box \a rect and - the requested \a positionAlignment. - - For example, if \a positionAlignment is Qt::AlignLeft | Qt::AlignBottom the returned point - will be shifted upward by the height of \a rect, starting from \a pos. So if the text is finally - drawn at that point, the lower left corner of the resulting text rect is at \a pos. -*/ -QPointF QCPItemText::getTextDrawPoint(const QPointF &pos, const QRectF &rect, Qt::Alignment positionAlignment) const -{ - if (positionAlignment == 0 || positionAlignment == (Qt::AlignLeft|Qt::AlignTop)) - return pos; - - QPointF result = pos; // start at top left - if (positionAlignment.testFlag(Qt::AlignHCenter)) - result.rx() -= rect.width()/2.0; - else if (positionAlignment.testFlag(Qt::AlignRight)) - result.rx() -= rect.width(); - if (positionAlignment.testFlag(Qt::AlignVCenter)) - result.ry() -= rect.height()/2.0; - else if (positionAlignment.testFlag(Qt::AlignBottom)) - result.ry() -= rect.height(); - return result; -} - -/*! \internal - - Returns the font that should be used for drawing text. Returns mFont when the item is not selected - and mSelectedFont when it is. -*/ -QFont QCPItemText::mainFont() const -{ - return mSelected ? mSelectedFont : mFont; -} - -/*! \internal - - Returns the color that should be used for drawing text. Returns mColor when the item is not - selected and mSelectedColor when it is. -*/ -QColor QCPItemText::mainColor() const -{ - return mSelected ? mSelectedColor : mColor; -} - -/*! \internal - - Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected - and mSelectedPen when it is. -*/ -QPen QCPItemText::mainPen() const -{ - return mSelected ? mSelectedPen : mPen; -} - -/*! \internal - - Returns the brush that should be used for drawing fills of the item. Returns mBrush when the item - is not selected and mSelectedBrush when it is. -*/ -QBrush QCPItemText::mainBrush() const -{ - return mSelected ? mSelectedBrush : mBrush; -} - - -// ================================================================================ -// =================== QCPPainter -// ================================================================================ - -/*! \class QCPPainter - \brief QPainter subclass used internally - - This internal class is used to provide some extended functionality e.g. for tweaking position - consistency between antialiased and non-antialiased painting and drawing common shapes (like - scatter symbols). Further it provides workarounds for QPainter quirks. - - \warning This class intentionally hides non-virtual functions of QPainter, e.g. setPen, save and - restore. So while it is possible to pass a QCPPainter instance to a function that expects a - QPainter pointer, some of the workarounds and tweaks will be unavailable to the function (because - it will call the base class implementations of the functions actually hidden by QCPPainter). -*/ - -/*! - Creates a new QCPPainter instance and sets default values -*/ -QCPPainter::QCPPainter() : - QPainter(), - mScaledExportMode(false), - mPdfExportMode(false), - mIsAntialiasing(false) -{ -} - -/*! - Creates a new QCPPainter instance on the specified paint \a device and sets default values. Just - like the analogous QPainter constructor, begins painting on \a device immediately. -*/ -QCPPainter::QCPPainter(QPaintDevice *device) : - QPainter(device), - mScaledExportMode(false), - mPdfExportMode(false), - mIsAntialiasing(false) -{ -} - -QCPPainter::~QCPPainter() -{ -} - -/*! - Sets the pixmap that will be used to draw scatters with \ref drawScatter, when the style is - QCP::ssPixmap. -*/ -void QCPPainter::setScatterPixmap(const QPixmap pm) -{ - mScatterPixmap = pm; -} - -/*! - Sets the pen of the painter and applies certain fixes to it, depending on the mode of this - QCPPainter. - - \note this function hides the non-virtual base class implementation. -*/ -void QCPPainter::setPen(const QPen &pen) -{ - QPainter::setPen(pen); - if (mScaledExportMode) - fixScaledPen(); -} - -/*! \overload - - Sets the pen (by color) of the painter and applies certain fixes to it, depending on the mode of - this QCPPainter. - - \note this function hides the non-virtual base class implementation. -*/ -void QCPPainter::setPen(const QColor &color) -{ - QPainter::setPen(color); - if (mScaledExportMode) - fixScaledPen(); -} - -/*! \overload - - Sets the pen (by style) of the painter and applies certain fixes to it, depending on the mode of - this QCPPainter. - - \note this function hides the non-virtual base class implementation. -*/ -void QCPPainter::setPen(Qt::PenStyle penStyle) -{ - QPainter::setPen(penStyle); - if (mScaledExportMode) - fixScaledPen(); -} - -/*! \overload - - Works around a Qt bug introduced with Qt 4.8 which makes drawing QLineF unpredictable when - antialiasing is disabled. - - \note this function hides the non-virtual base class implementation. -*/ -void QCPPainter::drawLine(const QLineF &line) -{ - if (mIsAntialiasing) - QPainter::drawLine(line); - else - QPainter::drawLine(line.toLine()); -} - -/*! - Sets whether painting uses antialiasing or not. Use this method instead of using setRenderHint - with QPainter::Antialiasing directly, as it allows QCPPainter to regain pixel exactness between - antialiased and non-antialiased painting (Since Qt uses slightly different coordinate systems for - AA/Non-AA painting). -*/ -void QCPPainter::setAntialiasing(bool enabled) -{ - if (mPdfExportMode) - return; - - setRenderHint(QPainter::Antialiasing, enabled); - if (mIsAntialiasing != enabled) - { - if (mIsAntialiasing) - translate(-0.5, -0.5); - else - translate(0.5, 0.5); - mIsAntialiasing = enabled; - } -} - -/*! - Saves the painter (see QPainter::save). Since QCPPainter adds some new internal state to - QPainter, the save/restore functions are reimplemented to also save/restore those members. - - \note this function hides the non-virtual base class implementation. - - \see restore -*/ -void QCPPainter::save() -{ - mAntialiasingStack.push(mIsAntialiasing); - QPainter::save(); -} - -/*! - Restores the painter (see QPainter::restore). Since QCPPainter adds some new internal state to - QPainter, the save/restore functions are reimplemented to also save/restore those members. - - \note this function hides the non-virtual base class implementation. - - \see save -*/ -void QCPPainter::restore() -{ - if (!mAntialiasingStack.isEmpty()) - mIsAntialiasing = mAntialiasingStack.pop(); - else - qDebug() << Q_FUNC_INFO << "Unbalanced save/restore"; - QPainter::restore(); -} - -/*! - Sets whether the painter shall adjust its fixes/workarounds optimized for vectorized pdf export. - - This means for example, that the antialiasing/non-antialiasing fix introduced with \ref - setAntialiasing is not used, since PDF is not rastered and thus works with floating point data - natively. -*/ -void QCPPainter::setPdfExportMode(bool enabled) -{ - mPdfExportMode = enabled; -} - -/*! - Sets whether the painter shall adjust its fixes/workarounds optimized for scaled export to - rastered image formats. - - For example this provides a workaround for a QPainter bug that prevents scaling of pen widths for - pens with width 0, although the QPainter::NonCosmeticDefaultPen render hint is set. -*/ -void QCPPainter::setScaledExportMode(bool enabled) -{ - mScaledExportMode = enabled; -} - -/*! - Provides a workaround for a QPainter bug that prevents scaling of pen widths for pens with width - 0, although the QPainter::NonCosmeticDefaultPen render hint is set. - - Changes the pen width from 0 to 1, if appropriate. - - Does nothing if the QCPPainter is not in scaled export mode (\ref setScaledExportMode). -*/ -void QCPPainter::fixScaledPen() -{ - if (mScaledExportMode && pen().isCosmetic() && qFuzzyIsNull(pen().widthF())) - { - QPen p = pen(); - p.setWidth(1); - QPainter::setPen(p); - } -} - -/*! - Draws a single scatter point with the specified \a style and \a size in pixels at the pixel position \a x and \a y. - - If the \a style is ssPixmap, make sure to pass the respective pixmap with \ref setScatterPixmap before calling - this function. -*/ -void QCPPainter::drawScatter(double x, double y, double size, QCP::ScatterStyle style) -{ - double w = size/2.0; - switch (style) - { - case QCP::ssNone: break; - case QCP::ssDot: - { - drawPoint(QPointF(x, y)); - break; - } - case QCP::ssCross: - { - drawLine(QLineF(x-w, y-w, x+w, y+w)); - drawLine(QLineF(x-w, y+w, x+w, y-w)); - break; - } - case QCP::ssPlus: - { - drawLine(QLineF(x-w, y, x+w, y)); - drawLine(QLineF(x, y+w, x, y-w)); - break; - } - case QCP::ssCircle: - { - setBrush(Qt::NoBrush); - drawEllipse(QPointF(x,y), w, w); - break; - } - case QCP::ssDisc: - { - setBrush(QBrush(pen().color())); - drawEllipse(QPointF(x,y), w, w); - break; - } - case QCP::ssSquare: - { - setBrush(Qt::NoBrush); - drawRect(QRectF(x-w, y-w, size, size)); - break; - } - case QCP::ssDiamond: - { - setBrush(Qt::NoBrush); - drawLine(QLineF(x-w, y, x, y-w)); - drawLine(QLineF(x, y-w, x+w, y)); - drawLine(QLineF(x+w, y, x, y+w)); - drawLine(QLineF(x, y+w, x-w, y)); - break; - } - case QCP::ssStar: - { - drawLine(QLineF(x-w, y, x+w, y)); - drawLine(QLineF(x, y+w, x, y-w)); - drawLine(QLineF(x-w*0.707, y-w*0.707, x+w*0.707, y+w*0.707)); - drawLine(QLineF(x-w*0.707, y+w*0.707, x+w*0.707, y-w*0.707)); - break; - } - case QCP::ssTriangle: - { - drawLine(QLineF(x-w, y+0.755*w, x+w, y+0.755*w)); - drawLine(QLineF(x+w, y+0.755*w, x, y-0.977*w)); - drawLine(QLineF(x, y-0.977*w, x-w, y+0.755*w)); - break; - } - case QCP::ssTriangleInverted: - { - drawLine(QLineF(x-w, y-0.755*w, x+w, y-0.755*w)); - drawLine(QLineF(x+w, y-0.755*w, x, y+0.977*w)); - drawLine(QLineF(x, y+0.977*w, x-w, y-0.755*w)); - break; - } - case QCP::ssCrossSquare: - { - setBrush(Qt::NoBrush); - drawLine(QLineF(x-w, y-w, x+w*0.95, y+w*0.95)); - drawLine(QLineF(x-w, y+w*0.95, x+w*0.95, y-w)); - drawRect(QRectF(x-w,y-w,size,size)); - break; - } - case QCP::ssPlusSquare: - { - setBrush(Qt::NoBrush); - drawLine(QLineF(x-w, y, x+w*0.95, y)); - drawLine(QLineF(x, y+w, x, y-w)); - drawRect(QRectF(x-w, y-w, size, size)); - break; - } - case QCP::ssCrossCircle: - { - setBrush(Qt::NoBrush); - drawLine(QLineF(x-w*0.707, y-w*0.707, x+w*0.67, y+w*0.67)); - drawLine(QLineF(x-w*0.707, y+w*0.67, x+w*0.67, y-w*0.707)); - drawEllipse(QPointF(x,y), w, w); - break; - } - case QCP::ssPlusCircle: - { - setBrush(Qt::NoBrush); - drawLine(QLineF(x-w, y, x+w, y)); - drawLine(QLineF(x, y+w, x, y-w)); - drawEllipse(QPointF(x,y), w, w); - break; - } - case QCP::ssPeace: - { - setBrush(Qt::NoBrush); - drawLine(QLineF(x, y-w, x, y+w)); - drawLine(QLineF(x, y, x-w*0.707, y+w*0.707)); - drawLine(QLineF(x, y, x+w*0.707, y+w*0.707)); - drawEllipse(QPointF(x,y), w, w); - break; - } - case QCP::ssPixmap: - { - drawPixmap(x-mScatterPixmap.width()*0.5, y-mScatterPixmap.height()*0.5, mScatterPixmap); - // if something in here is changed, adapt QCP::ssPixmap special case in drawLegendIcon(), too - break; - } - } -} - - -// ================================================================================ -// =================== QCPLineEnding -// ================================================================================ - -/*! \class QCPLineEnding - \brief Handles the different ending decorations for line-like items - - \image html QCPLineEnding.png "The various ending styles currently supported" - - For every ending a line-like item has, an instance of this class exists. For example, QCPItemLine - has two endings which can be set with QCPItemLine::setHead and QCPItemLine::setTail. - - The styles themselves are defined via the enum QCPLineEnding::EndingStyle. Most decorations can - be modified regarding width and length, see \ref setWidth and \ref setLength. The direction of - the ending decoration (e.g. direction an arrow is pointing) is controlled by the line-like item. - For example, when both endings of a QCPItemLine are set to be arrows, they will point to opposite - directions, e.g. "outward". This can be changed by \ref setInverted, which would make the - respective arrow point inward. - - Note that due to the overloaded QCPLineEnding constructor, you may directly specify a - QCPLineEnding::EndingStyle where actually a QCPLineEnding is expected, e.g. \code - myItemLine->setHead(QCPLineEnding::esSpikeArrow) \endcode -*/ - -/*! - Creates a QCPLineEnding instance with default values (style \ref esNone). -*/ -QCPLineEnding::QCPLineEnding() : - mStyle(esNone), - mWidth(8), - mLength(10), - mInverted(false) -{ -} - -/*! - Creates a QCPLineEnding instance with the specified values. -*/ -QCPLineEnding::QCPLineEnding(QCPLineEnding::EndingStyle style, double width, double length, bool inverted) : - mStyle(style), - mWidth(width), - mLength(length), - mInverted(inverted) -{ -} - -/*! - Sets the style of the ending decoration. -*/ -void QCPLineEnding::setStyle(QCPLineEnding::EndingStyle style) -{ - mStyle = style; -} - -/*! - Sets the width of the ending decoration, if the style supports it. On arrows, for example, the - width defines the size perpendicular to the arrow's pointing direction. - - \see setLength -*/ -void QCPLineEnding::setWidth(double width) -{ - mWidth = width; -} - -/*! - Sets the length of the ending decoration, if the style supports it. On arrows, for example, the - length defines the size in pointing direction. - - \see setWidth -*/ -void QCPLineEnding::setLength(double length) -{ - mLength = length; -} - -/*! - Sets whether the direction of the ending decoration shall be inverted with respect to the natural - direction given by the parent item. For example, an arrow decoration will point inward when - \a inverted is set to true. -*/ -void QCPLineEnding::setInverted(bool inverted) -{ - mInverted = inverted; -} - -/*! \internal - - Returns the maximum pixel radius the ending decoration might cover, starting from the position - the decoration is drawn at (typically a line ending/\ref QCPItemPosition of an item). - - This is relevant for clipping. Only omit painting of the decoration when the position where the - decoration is supposed to be drawn is farther away from the clipping rect than the returned - distance. -*/ -double QCPLineEnding::boundingDistance() const -{ - switch (mStyle) - { - case esNone: - return 0; - - case esFlatArrow: - case esSpikeArrow: - case esLineArrow: - return qSqrt(mWidth*mWidth+mLength*mLength); // items that have width and length - - case esDisc: - case esSquare: - case esDiamond: - case esBar: - return mWidth*1.42; // items that only have a width -> with*sqrt(2) - } - return 0; -} - -/*! \internal - - Draws the line ending with the specified \a painter at the position \a pos. The direction of the - line ending is controlled with \a dir. -*/ -void QCPLineEnding::draw(QCPPainter *painter, const QVector2D &pos, const QVector2D &dir) const -{ - if (mStyle == esNone) - return; - - QVector2D lengthVec(dir.normalized()*(mInverted ? -1 : 1)); - if (lengthVec.isNull()) - lengthVec = QVector2D(1, 0); - QVector2D widthVec(-lengthVec.y(), lengthVec.x()); - lengthVec *= mLength; - widthVec *= mWidth*0.5; - - QPen penBackup = painter->pen(); - QPen miterPen = penBackup; - miterPen.setJoinStyle(Qt::MiterJoin); - switch (mStyle) - { - case esNone: break; - case esFlatArrow: - { - QPointF points[3] = {pos.toPointF(), - (pos-lengthVec+widthVec).toPointF(), - (pos-lengthVec-widthVec).toPointF() - }; - painter->setPen(miterPen); - painter->drawConvexPolygon(points, 3); - painter->setPen(penBackup); - break; - } - case esSpikeArrow: - { - QPointF points[4] = {pos.toPointF(), - (pos-lengthVec+widthVec).toPointF(), - (pos-lengthVec*0.8).toPointF(), - (pos-lengthVec-widthVec).toPointF() - }; - painter->setPen(miterPen); - painter->drawConvexPolygon(points, 4); - painter->setPen(penBackup); - break; - } - case esLineArrow: - { - QPointF points[3] = {(pos-lengthVec+widthVec).toPointF(), - pos.toPointF(), - (pos-lengthVec-widthVec).toPointF() - }; - painter->setPen(miterPen); - painter->drawPolyline(points, 3); - painter->setPen(penBackup); - break; - } - case esDisc: - { - painter->drawEllipse(pos.toPointF(), mWidth*0.5, mWidth*0.5); - break; - } - case esSquare: - { - QVector2D widthVecPerp(-widthVec.y(), widthVec.x()); - QPointF points[4] = {(pos-widthVecPerp+widthVec).toPointF(), - (pos-widthVecPerp-widthVec).toPointF(), - (pos+widthVecPerp-widthVec).toPointF(), - (pos+widthVecPerp+widthVec).toPointF() - }; - painter->setPen(miterPen); - painter->drawConvexPolygon(points, 4); - painter->setPen(penBackup); - break; - } - case esDiamond: - { - QVector2D widthVecPerp(-widthVec.y(), widthVec.x()); - QPointF points[4] = {(pos-widthVecPerp).toPointF(), - (pos-widthVec).toPointF(), - (pos+widthVecPerp).toPointF(), - (pos+widthVec).toPointF() - }; - painter->setPen(miterPen); - painter->drawConvexPolygon(points, 4); - painter->setPen(penBackup); - break; - } - case esBar: - { - painter->drawLine((pos+widthVec).toPointF(), (pos-widthVec).toPointF()); - break; - } - } -} - -/*! \internal - \overload - - Draws the line ending. The direction is controlled with the \a angle parameter in radians. -*/ -void QCPLineEnding::draw(QCPPainter *painter, const QVector2D &pos, double angle) const -{ - draw(painter, pos, QVector2D(qCos(angle), qSin(angle))); -} - - -// ================================================================================ -// =================== QCPItemCurve -// ================================================================================ - -/*! \class QCPItemCurve - \brief A curved line from one point to another - - \image html QCPItemCurve.png "Curve example. Blue dotted circles are anchors, solid blue discs are positions." - - It has four positions, \a start and \a end, which define the end points of the line, and two - control points which define the direction the line exits from the start and the direction from - which it approaches the end: \a startDir and \a endDir. - - With \ref setHead and \ref setTail you may set different line ending styles, e.g. to create an - arrow. - - Often it is desirable for the control points to stay at fixed relative positions to the start/end - point. This can be achieved by setting the parent anchor e.g. of \a startDir simply to \a start, - and then specify the desired pixel offset with QCPItemPosition::setCoords on \a startDir. -*/ - -/*! - Creates a curve item and sets default values. - - The constructed item can be added to the plot with QCustomPlot::addItem. -*/ -QCPItemCurve::QCPItemCurve(QCustomPlot *parentPlot) : - QCPAbstractItem(parentPlot), - start(createPosition("start")), - startDir(createPosition("startDir")), - endDir(createPosition("endDir")), - end(createPosition("end")) -{ - start->setCoords(0, 0); - startDir->setCoords(0.5, 0); - endDir->setCoords(0, 0.5); - end->setCoords(1, 1); - - setPen(QPen(Qt::black)); - setSelectedPen(QPen(Qt::blue,2)); -} - -QCPItemCurve::~QCPItemCurve() -{ -} - -/*! - Sets the pen that will be used to draw the line - - \see setSelectedPen -*/ -void QCPItemCurve::setPen(const QPen &pen) -{ - mPen = pen; -} - -/*! - Sets the pen that will be used to draw the line when selected - - \see setPen, setSelected -*/ -void QCPItemCurve::setSelectedPen(const QPen &pen) -{ - mSelectedPen = pen; -} - -/*! - Sets the line ending style of the head. The head corresponds to the \a end position. - - Note that due to the overloaded QCPLineEnding constructor, you may directly specify - a QCPLineEnding::EndingStyle here, e.g. \code setHead(QCPLineEnding::esSpikeArrow) \endcode - - \see setTail -*/ -void QCPItemCurve::setHead(const QCPLineEnding &head) -{ - mHead = head; -} - -/*! - Sets the line ending style of the tail. The tail corresponds to the \a start position. - - Note that due to the overloaded QCPLineEnding constructor, you may directly specify - a QCPLineEnding::EndingStyle here, e.g. \code setTail(QCPLineEnding::esSpikeArrow) \endcode - - \see setHead -*/ -void QCPItemCurve::setTail(const QCPLineEnding &tail) -{ - mTail = tail; -} - -/* inherits documentation from base class */ -double QCPItemCurve::selectTest(const QPointF &pos) const -{ - if (!mVisible) - return -1; - - QPointF startVec(start->pixelPoint()); - QPointF startDirVec(startDir->pixelPoint()); - QPointF endDirVec(endDir->pixelPoint()); - QPointF endVec(end->pixelPoint()); - - QPainterPath cubicPath(startVec); - cubicPath.cubicTo(startDirVec, endDirVec, endVec); - - QPolygonF polygon = cubicPath.toSubpathPolygons().first(); - double minDistSqr = std::numeric_limits::max(); - for (int i=1; ipixelPoint()); - QPointF startDirVec(startDir->pixelPoint()); - QPointF endDirVec(endDir->pixelPoint()); - QPointF endVec(end->pixelPoint()); - if (QVector2D(endVec-startVec).length() > 1e10) // too large curves cause crash - return; - - QPainterPath cubicPath(startVec); - cubicPath.cubicTo(startDirVec, endDirVec, endVec); - - // paint visible segment, if existent: - QRect clip = clipRect().adjusted(-mainPen().widthF(), -mainPen().widthF(), mainPen().widthF(), mainPen().widthF()); - QRect cubicRect = cubicPath.controlPointRect().toRect(); - if (cubicRect.isEmpty()) // may happen when start and end exactly on same x or y position - cubicRect.adjust(0, 0, 1, 1); - if (clip.intersects(cubicRect)) - { - painter->setPen(mainPen()); - painter->drawPath(cubicPath); - painter->setBrush(Qt::SolidPattern); - if (mTail.style() != QCPLineEnding::esNone) - mTail.draw(painter, QVector2D(startVec), M_PI-cubicPath.angleAtPercent(0)/180.0*M_PI); - if (mHead.style() != QCPLineEnding::esNone) - mHead.draw(painter, QVector2D(endVec), -cubicPath.angleAtPercent(1)/180.0*M_PI); - } -} - -/*! \internal - - Returns the pen that should be used for drawing lines. Returns mPen when the - item is not selected and mSelectedPen when it is. -*/ -QPen QCPItemCurve::mainPen() const -{ - return mSelected ? mSelectedPen : mPen; -} - - -// ================================================================================ -// =================== QCPLayer -// ================================================================================ - -/*! \class QCPLayer - \brief A layer that may contain objects, to control the rendering order - - The Layering system of QCustomPlot is the mechanism to control the rendering order of the - elements inside the plot, e.g. that the grid is drawn behind plottables etc. - - It is based on the two classes QCPLayer and QCPLayerable. A QCustomPlot contains an ordered list - of one or more instances of QCPLayer (see QCustomPlot::addLayer, QCustomPlot::layer, - QCustomPlot::moveLayer, etc.). The layers are drawn in the order they are in the list. - - A QCPLayer itself contains an ordered list of QCPLayerable instances. QCPLayerable is an abstract - base class from which almost all visible objects derive, like axes, grids, graphs, items, etc. - - By default, QCustomPlot has three layers: "grid", "main" and "axes" (in that order). Initially - the QCPGrid instances are on the "grid" layer, so the grid will be drawn beneath the objects on - the other two layers. The top layer is "axes" and contains all four axes, so they will be drawn - on top. Between these two layers, there is the "main" layer. It is initially empty and set as the - current layer (see QCustomPlot::setCurrentLayer). This means, all new plottables, items etc. - are created on this layer by default, and are thus drawn above the grid but below the axes. - - Controlling the ordering of objects is easy: Create a new layer in the position you want it to - be, e.g. above "main", with QCustomPlot::addLayer. Then set the current layer with - QCustomPlot::setCurrentLayer to that new layer and finally create the objects normally. They will - be placed on the new layer automatically, due to the current layer setting. Alternatively you - could have also ignored the current layer setting and just moved the objects with - QCPLayerable::setLayer to the desired layer after creating them. - - It is also possible to move whole layers. For example, If you want the grid to be shown in front - of all plottables/items on the "main" layer, just move it above "main" with - QCustomPlot::moveLayer. This way the ordering might now be "main", "grid", "axes", so while the - grid will still be beneath the axes, it will now be drawn above plottables/items on "main", as - intended. - - The rendering order within one layer is simply by order of creation. The item created last (or - added last to the layer), is drawn on top of all other objects on that layer. - - When a layer is deleted, the objects on it are not deleted with it, but fall on the layer below - the deleted layer, see QCustomPlot::removeLayer. -*/ - -/* start documentation of inline functions */ - -/*! \fn QList QCPLayer::children() const - - Returns a list of all layerables on this layer. The order corresponds to the rendering order, - i.e. layerables with higher indices are drawn above layerables with lower indices. -*/ - -/* end documentation of inline functions */ - -/*! - Creates a new QCPLayer instance. - - Normally you shouldn't directly create layers like this, use QCustomPlot::addLayer instead. - - \warning It is not checked that \a layerName is actually an unique layer name in \a parentPlot. - This check is only performed by QCustomPlot::addLayer. -*/ -QCPLayer::QCPLayer(QCustomPlot *parentPlot, const QString &layerName) : - mParentPlot(parentPlot), - mName(layerName) -{ - // Note: no need to make sure layerName doesn't already, because layer - // management is done with QCustomPlot functions. -} - -QCPLayer::~QCPLayer() -{ -} - -/*! - Returns the index this layer has in the QCustomPlot. The index is the integer number by which this layer can be - accessed via QCustomPlot::layer. - - Layers with greater indices will be drawn above layers with smaller indices. -*/ -int QCPLayer::index() const -{ - return mParentPlot->mLayers.indexOf(const_cast(this)); -} - -/*! \internal - - Adds the \a layerable to the list of this layer. If \a prepend is set to true, the layerable will - be prepended to the list, i.e. be drawn beneath the other layerables already in the list. - - This function does not change the \a mLayer member of \a layerable to this layer. (Use - QCPLayerable::setLayer to change the layer of an object, not this function.) - - \see removeChild -*/ -void QCPLayer::addChild(QCPLayerable *layerable, bool prepend) -{ - if (!mChildren.contains(layerable)) - { - if (prepend) - mChildren.prepend(layerable); - else - mChildren.append(layerable); - } else - qDebug() << Q_FUNC_INFO << "layerable is already child of this layer" << reinterpret_cast(layerable); -} - -/*! \internal - - Removes the \a layerable from the list of this layer. - - This function does not change the \a mLayer member of \a layerable. (Use QCPLayerable::setLayer - to change the layer of an object, not this function.) - - \see addChild -*/ -void QCPLayer::removeChild(QCPLayerable *layerable) -{ - if (!mChildren.removeOne(layerable)) - qDebug() << Q_FUNC_INFO << "layerable is not child of this layer" << reinterpret_cast(layerable); -} - - -// ================================================================================ -// =================== QCPLayerable -// ================================================================================ - -/*! \class QCPLayerable - \brief Base class for all objects that can be placed on layers - - This is the abstract base class most visible objects derive from, e.g. plottables, axes, grid - etc. - - Every layerable is on a layer (QCPLayer) which allows controlling the rendering order by stacking - the layers accordingly. - - For details about the layering mechanism, see the QCPLayer documentation. -*/ - -/* start documentation of pure virtual functions */ - -/*! \fn virtual void QCPLayerable::applyDefaultAntialiasingHint(QCPPainter *painter) const = 0 - \internal - - This function applies the default antialiasing setting to the specified \a painter, using the - function \ref applyAntialiasingHint. This is the antialiasing state the painter is in, when \ref - draw is called on the layerable. If the layerable has multiple entities whose antialiasing - setting may be specified individually, this function should set the antialiasing state of the - most prominent entity. In this case however, the \ref draw function usually calls the specialized - versions of this function before drawing each entity, effectively overriding the setting of the - default antialiasing hint. - - First example: QCPGraph has multiple entities that have an antialiasing setting: The graph - line, fills, scatters and error bars. Those can be configured via QCPGraph::setAntialiased, - QCPGraph::setAntialiasedFill, QCPGraph::setAntialiasedScatters etc. Consequently, there isn't - only the QCPGraph::applyDefaultAntialiasingHint function (which corresponds to the graph line's - antialiasing), but specialized ones like QCPGraph::applyFillAntialiasingHint and - QCPGraph::applyScattersAntialiasingHint. So before drawing one of those entities, QCPGraph::draw - calls the respective specialized applyAntialiasingHint function. - - Second example: QCPItemLine consists only of a line so there is only one antialiasing - setting which can be controlled with QCPItemLine::setAntialiased. (This function is inherited by - all layerables. The specialized functions, as seen on QCPGraph, must be added explicitly to the - respective layerable subclass.) Consequently it only has the normal - QCPItemLine::applyDefaultAntialiasingHint. The \ref QCPItemLine::draw function doesn't need to - care about setting any antialiasing states, because the default antialiasing hint is already set - on the painter when the \ref draw function is called, and that's the state it wants to draw the - line with. -*/ - -/*! \fn virtual void QCPLayerable::draw(QCPPainter *painter) const = 0 - \internal - - This function draws the layerable to the specified \a painter. - - Before this function is called, the painter's antialiasing state is set via \ref - applyDefaultAntialiasingHint, see the documentation there. Further, its clipping rectangle was - set to \ref clipRect. -*/ - -/* end documentation of pure virtual functions */ - -/*! - Creates a new QCPLayerable instance. - - Since QCPLayerable is an abstract base class, it can't be instantiated directly. Use one of the - derived classes. -*/ -QCPLayerable::QCPLayerable(QCustomPlot *parentPlot) : - QObject(0), // rather not bind to parentPlot, incase we want to allow moving of objects between customplots some day - mVisible(true), - mParentPlot(parentPlot), - mLayer(0), - mAntialiased(true) -{ - if (mParentPlot) - setLayer(mParentPlot->currentLayer()); -} - -QCPLayerable::~QCPLayerable() -{ - if (mLayer) - { - mLayer->removeChild(this); - mLayer = 0; - } -} - -/*! - Sets the visibility of this layerable object. If an object is not visible, it will not be drawn - on the QCustomPlot surface, and user interaction with it (e.g. click/selection) is not possible. -*/ -void QCPLayerable::setVisible(bool on) -{ - mVisible = on; -} - -/*! - Sets the \a layer of this layerable object. The object will be placed on top of the other objects - already on \a layer. - - Returns true on success, i.e. if \a layer is a valid layer. -*/ -bool QCPLayerable::setLayer(QCPLayer *layer) -{ - return moveToLayer(layer, false); -} - -/*! \overload - Sets the layer of this layerable object by name - - Returns true on success, i.e. if \a layerName is a valid layer name. -*/ -bool QCPLayerable::setLayer(const QString &layerName) -{ - if (!mParentPlot) - { - qDebug() << Q_FUNC_INFO << "no parent QCustomPlot set"; - return false; - } - if (QCPLayer *layer = mParentPlot->layer(layerName)) - { - return setLayer(layer); - } else - { - qDebug() << Q_FUNC_INFO << "there is no layer with name" << layerName; - return false; - } -} - -/*! - Sets whether this object will be drawn antialiased or not. - - Note that antialiasing settings may be overridden by QCustomPlot::setAntialiasedElements and - QCustomPlot::setNotAntialiasedElements. -*/ -void QCPLayerable::setAntialiased(bool enabled) -{ - mAntialiased = enabled; -} - -/*! \internal - - Moves this layerable object to \a layer. If \a prepend is true, this object will be prepended to - the new layer's list, i.e. it will be drawn below the objects already on the layer. If it is - false, the object will be appended. - - Returns true on success, i.e. if \a layer is a valid layer. -*/ -bool QCPLayerable::moveToLayer(QCPLayer *layer, bool prepend) -{ - if (!mParentPlot) - { - qDebug() << Q_FUNC_INFO << "no parent QCustomPlot set"; - return false; - } - if (layer && layer->parentPlot() != mParentPlot) - { - qDebug() << Q_FUNC_INFO << "layer" << layer->name() << "is not in same QCustomPlot as this layerable"; - return false; - } - - if (mLayer) - mLayer->removeChild(this); - mLayer = layer; - if (mLayer) - mLayer->addChild(this, prepend); - return true; -} - -/*! \internal - - Sets the QPainter::Antialiasing render hint on the provided \a painter, depending on the - \a localAntialiased value as well as the overrides \ref QCustomPlot::setAntialiasedElements and - \ref QCustomPlot::setNotAntialiasedElements. Which override enum this function takes into account is - controlled via \a overrideElement. -*/ -void QCPLayerable::applyAntialiasingHint(QCPPainter *painter, bool localAntialiased, QCP::AntialiasedElement overrideElement) const -{ - if (mParentPlot && mParentPlot->notAntialiasedElements().testFlag(overrideElement)) - painter->setAntialiasing(false); - else if (mParentPlot && mParentPlot->antialiasedElements().testFlag(overrideElement)) - painter->setAntialiasing(true); - else - painter->setAntialiasing(localAntialiased); -} - -/*! \internal - - Returns the clipping rectangle of this layerable object. By default, this is the viewport of the parent QCustomPlot. - Specific subclasses may reimplement this function to provide different clipping rects. - - The returned clipping rect is set on the painter before the draw function of the respective - object is called. -*/ -QRect QCPLayerable::clipRect() const -{ - if (mParentPlot) - return mParentPlot->viewport(); - else - return QRect(); -} - - -// ================================================================================ -// =================== QCPGrid -// ================================================================================ - -/*! \class QCPGrid - \brief Responsible for drawing the grid of a QCPAxis. - - This class is tightly bound to QCPAxis. Every axis owns a grid instance internally and uses it to - draw the grid. Normally, you don't need to interact with the QCPGrid instance, because QCPAxis - reproduces the grid interface in its own interface. - - The axis and grid drawing was split into two classes to allow them to be placed on different - layers (both QCPAxis and QCPGrid inherit from QCPLayerable). So it is possible to have the grid - at the background and the axes in the foreground, and any plottables/items in between. This - described situation is the default setup, see QCPLayer documentation. -*/ - -/*! - Creates a QCPGrid instance and sets default values. - - You shouldn't instantiate grids on their own, since every QCPAxis brings its own QCPGrid - internally -*/ -QCPGrid::QCPGrid(QCPAxis *parentAxis) : - QCPLayerable(parentAxis->parentPlot()), - mParentAxis(parentAxis) -{ - setPen(QPen(QColor(200,200,200), 0, Qt::DotLine)); - setSubGridPen(QPen(QColor(220,220,220), 0, Qt::DotLine)); - setZeroLinePen(QPen(QColor(200,200,200), 0, Qt::SolidLine)); - setSubGridVisible(false); - setAntialiased(false); - setAntialiasedSubGrid(false); - setAntialiasedZeroLine(false); -} - -QCPGrid::~QCPGrid() -{ -} - -/*! - Sets whether grid lines at sub tick marks are drawn. - - \see setSubGridPen -*/ -void QCPGrid::setSubGridVisible(bool visible) -{ - mSubGridVisible = visible; -} - -/*! - Sets whether sub grid lines are drawn antialiased. -*/ -void QCPGrid::setAntialiasedSubGrid(bool enabled) -{ - mAntialiasedSubGrid = enabled; -} - -/*! - Sets whether zero lines are drawn antialiased. -*/ -void QCPGrid::setAntialiasedZeroLine(bool enabled) -{ - mAntialiasedZeroLine = enabled; -} - -/*! - Sets the pen with which (major) grid lines are drawn. -*/ -void QCPGrid::setPen(const QPen &pen) -{ - mPen = pen; -} - -/*! - Sets the pen with which sub grid lines are drawn. -*/ -void QCPGrid::setSubGridPen(const QPen &pen) -{ - mSubGridPen = pen; -} - -/*! - Sets the pen with which zero lines are drawn. - - Zero lines are lines at coordinate 0 which may be drawn with a different pen than other grid - lines. To disable zero lines and just draw normal grid lines at zero, set \a pen to Qt::NoPen. -*/ -void QCPGrid::setZeroLinePen(const QPen &pen) -{ - mZeroLinePen = pen; -} - -/*! \internal - - A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter - before drawing the major grid lines. - - This is the antialiasing state the painter passed to the \ref draw method is in by default. - - This function takes into account the local setting of the antialiasing flag as well as - the overrides set e.g. with \ref QCustomPlot::setNotAntialiasedElements. - - \see setAntialiased -*/ -void QCPGrid::applyDefaultAntialiasingHint(QCPPainter *painter) const -{ - applyAntialiasingHint(painter, mAntialiased, QCP::aeGrid); -} - -/*! \internal - - Draws grid lines and sub grid lines at the positions of (sub) ticks of the parent axis, spanning - over the complete axis rect. Also draws the zero line, if appropriate (\ref setZeroLinePen). - - Called by QCustomPlot::draw to draw the grid of an axis. -*/ -void QCPGrid::draw(QCPPainter *painter) -{ - if (!mParentAxis->visible()) return; // also don't draw grid when parent axis isn't visible - - if (mSubGridVisible) - drawSubGridLines(painter); - drawGridLines(painter); -} - -/*! \internal - - Draws the main grid lines and possibly a zero line with the specified painter. - - This is a helper function called by \ref draw. -*/ -void QCPGrid::drawGridLines(QCPPainter *painter) const -{ - int lowTick = mParentAxis->mLowestVisibleTick; - int highTick = mParentAxis->mHighestVisibleTick; - double t; // helper variable, result of coordinate-to-pixel transforms - if (mParentAxis->orientation() == Qt::Horizontal) - { - // draw zeroline: - int zeroLineIndex = -1; - if (mZeroLinePen.style() != Qt::NoPen && mParentAxis->mRange.lower < 0 && mParentAxis->mRange.upper > 0) - { - applyAntialiasingHint(painter, mAntialiasedZeroLine, QCP::aeZeroLine); - painter->setPen(mZeroLinePen); - double epsilon = mParentAxis->range().size()*1E-6; // for comparing double to zero - for (int i=lowTick; i <= highTick; ++i) - { - if (qAbs(mParentAxis->mTickVector.at(i)) < epsilon) - { - zeroLineIndex = i; - t = mParentAxis->coordToPixel(mParentAxis->mTickVector.at(i)); // x - painter->drawLine(QLineF(t, mParentAxis->mAxisRect.bottom(), t, mParentAxis->mAxisRect.top())); - break; - } - } - } - applyDefaultAntialiasingHint(painter); - painter->setPen(mPen); - for (int i=lowTick; i <= highTick; ++i) - { - if (i == zeroLineIndex) continue; // don't draw a gridline on top of the zeroline - t = mParentAxis->coordToPixel(mParentAxis->mTickVector.at(i)); // x - painter->drawLine(QLineF(t, mParentAxis->mAxisRect.bottom(), t, mParentAxis->mAxisRect.top())); - } - } else - { - // draw zeroline: - int zeroLineIndex = -1; - if (mZeroLinePen.style() != Qt::NoPen && mParentAxis->mRange.lower < 0 && mParentAxis->mRange.upper > 0) - { - applyAntialiasingHint(painter, mAntialiasedZeroLine, QCP::aeZeroLine); - painter->setPen(mZeroLinePen); - double epsilon = mParentAxis->mRange.size()*1E-6; // for comparing double to zero - for (int i=lowTick; i <= highTick; ++i) - { - if (qAbs(mParentAxis->mTickVector.at(i)) < epsilon) - { - zeroLineIndex = i; - t = mParentAxis->coordToPixel(mParentAxis->mTickVector.at(i)); // y - painter->drawLine(QLineF(mParentAxis->mAxisRect.left(), t, mParentAxis->mAxisRect.right(), t)); - break; - } - } - } - // draw grid lines: - applyDefaultAntialiasingHint(painter); - painter->setPen(mPen); - for (int i=lowTick; i <= highTick; ++i) - { - if (i == zeroLineIndex) continue; // don't draw a gridline on top of the zeroline - t = mParentAxis->coordToPixel(mParentAxis->mTickVector.at(i)); // y - painter->drawLine(QLineF(mParentAxis->mAxisRect.left(), t, mParentAxis->mAxisRect.right(), t)); - } - } -} - -/*! \internal - - Draws the sub grid lines with the specified painter. - - This is a helper function called by \ref draw. -*/ -void QCPGrid::drawSubGridLines(QCPPainter *painter) const -{ - applyAntialiasingHint(painter, mAntialiasedSubGrid, QCP::aeSubGrid); - double t; // helper variable, result of coordinate-to-pixel transforms - painter->setPen(mSubGridPen); - if (mParentAxis->orientation() == Qt::Horizontal) - { - for (int i=0; imSubTickVector.size(); ++i) - { - t = mParentAxis->coordToPixel(mParentAxis->mSubTickVector.at(i)); // x - painter->drawLine(QLineF(t, mParentAxis->mAxisRect.bottom(), t, mParentAxis->mAxisRect.top())); - } - } else - { - for (int i=0; imSubTickVector.size(); ++i) - { - t = mParentAxis->coordToPixel(mParentAxis->mSubTickVector.at(i)); // y - painter->drawLine(QLineF(mParentAxis->mAxisRect.left(), t, mParentAxis->mAxisRect.right(), t)); - } - } -} - - -// ================================================================================ -// =================== QCPItemAnchor -// ================================================================================ - -/*! \class QCPItemAnchor - \brief An anchor of an item to which positions can be attached to. - - An item (QCPAbstractItem) may have one or more anchors. Unlike QCPItemPosition, an anchor doesn't - control anything on its item, but provides a way to tie other items via their positions to the - anchor. - - For example, a QCPItemRect is defined by its positions \a topLeft and \a bottomRight. - Additionally it has various anchors like \a top, \a topRight or \a bottomLeft etc. So you can - attach the \a start (which is a QCPItemPosition) of a QCPItemLine to one of the anchors by - calling QCPItemPosition::setParentAnchor on \a start, passing the wanted anchor of the - QCPItemRect. This way the start of the line will now always follow the respective anchor location - on the rect item. - - Note that QCPItemPosition derives from QCPItemAnchor, so every position can also serve as an - anchor to other positions. - - To learn how to provide anchors in your own item subclasses, see the subclassing section of the - QCPAbstractItem documentation. -*/ - -/*! - Creates a new QCPItemAnchor. You shouldn't create QCPItemAnchor instances directly, even if - you want to make a new item subclass. Use \ref QCPAbstractItem::createAnchor instead, as - explained in the subclassing section of the QCPAbstractItem documentation. -*/ -QCPItemAnchor::QCPItemAnchor(QCustomPlot *parentPlot, QCPAbstractItem *parentItem, const QString name, int anchorId) : - mParentPlot(parentPlot), - mParentItem(parentItem), - mAnchorId(anchorId), - mName(name) -{ -} - -QCPItemAnchor::~QCPItemAnchor() -{ - // unregister as parent at children: - QList currentChildren(mChildren.toList()); - for (int i=0; isetParentAnchor(0); // this acts back on this anchor and child removes itself from mChildren -} - -/*! - Returns the final absolute pixel position of the QCPItemAnchor on the QCustomPlot surface. - - The pixel information is internally retrieved via QCPAbstractItem::anchorPixelPosition of the - parent item, QCPItemAnchor is just an intermediary. -*/ -QPointF QCPItemAnchor::pixelPoint() const -{ - if (mParentItem) - { - if (mAnchorId > -1) - { - return mParentItem->anchorPixelPoint(mAnchorId); - } else - { - qDebug() << Q_FUNC_INFO << "no valid anchor id set:" << mAnchorId; - return QPointF(); - } - } else - { - qDebug() << Q_FUNC_INFO << "no parent item set"; - return QPointF(); - } -} - -/*! \internal - - Adds \a pos to the child list of this anchor. This is necessary to notify the children prior to - destruction of the anchor. - - Note that this function does not change the parent setting in \a pos. -*/ -void QCPItemAnchor::addChild(QCPItemPosition *pos) -{ - if (!mChildren.contains(pos)) - mChildren.insert(pos); - else - qDebug() << Q_FUNC_INFO << "provided pos is child already" << reinterpret_cast(pos); -} - -/*! \internal - - Removes \a pos from the child list of this anchor. - - Note that this function does not change the parent setting in \a pos. -*/ -void QCPItemAnchor::removeChild(QCPItemPosition *pos) -{ - if (!mChildren.remove(pos)) - qDebug() << Q_FUNC_INFO << "provided pos isn't child" << reinterpret_cast(pos); -} - - -// ================================================================================ -// =================== QCPItemBracket -// ================================================================================ - -/*! \class QCPItemBracket - \brief A bracket for referencing/highlighting certain parts in the plot. - - \image html QCPItemBracket.png "Bracket example. Blue dotted circles are anchors, solid blue discs are positions." - - It has two positions, \a left and \a right, which define the span of the bracket. If \a left is - actually farther to the left than \a right, the bracket is opened to the bottom, as shown in the - example image. - - The bracket supports multiple styles via \ref setStyle. The length, i.e. how far the bracket - stretches away from the embraced span, can be controlled with \ref setLength. - - \image html QCPItemBracket-length.png -
    Demonstrating the effect of different values for \ref setLength, for styles \ref - bsCalligraphic and \ref bsSquare. Anchors and positions are displayed for reference.
    - - It provides an anchor \a center, to allow connection of other items, e.g. an arrow (QCPItemLine - or QCPItemCurve) or a text label (QCPItemText), to the bracket. -*/ - -/*! - Creates a bracket item and sets default values. - - The constructed item can be added to the plot with QCustomPlot::addItem. -*/ -QCPItemBracket::QCPItemBracket(QCustomPlot *parentPlot) : - QCPAbstractItem(parentPlot), - left(createPosition("left")), - right(createPosition("right")), - center(createAnchor("center", aiCenter)) -{ - left->setCoords(0, 0); - right->setCoords(1, 1); - - setPen(QPen(Qt::black)); - setSelectedPen(QPen(Qt::blue, 2)); - setLength(8); - setStyle(bsCalligraphic); -} - -QCPItemBracket::~QCPItemBracket() -{ -} - -/*! - Sets the pen that will be used to draw the bracket. - - Note that when the style is \ref bsCalligraphic, only the color will be taken from the pen, the - stroke and width are ignored. To change the apparent stroke width of a calligraphic bracket, use - \ref setLength, which has a similar effect. - - \see setSelectedPen -*/ -void QCPItemBracket::setPen(const QPen &pen) -{ - mPen = pen; -} - -/*! - Sets the pen that will be used to draw the bracket when selected - - \see setPen, setSelected -*/ -void QCPItemBracket::setSelectedPen(const QPen &pen) -{ - mSelectedPen = pen; -} - -/*! - Sets the \a length in pixels how far the bracket extends in the direction towards the embraced - span of the bracket (i.e. perpendicular to the left-right-direction) - - \image html QCPItemBracket-length.png -
    Demonstrating the effect of different values for \ref setLength, for styles \ref - bsCalligraphic and \ref bsSquare. Anchors and positions are displayed for reference.
    -*/ -void QCPItemBracket::setLength(double length) -{ - mLength = length; -} - -/*! - Sets the style of the bracket, i.e. the shape/visual appearance. - - \see setPen -*/ -void QCPItemBracket::setStyle(QCPItemBracket::BracketStyle style) -{ - mStyle = style; -} - -/* inherits documentation from base class */ -double QCPItemBracket::selectTest(const QPointF &pos) const -{ - if (!mVisible) - return -1; - - QVector2D leftVec(left->pixelPoint()); - QVector2D rightVec(right->pixelPoint()); - if (leftVec.toPoint() == rightVec.toPoint()) - return -1; - - QVector2D widthVec = (rightVec-leftVec)*0.5; - QVector2D lengthVec(-widthVec.y(), widthVec.x()); - lengthVec = lengthVec.normalized()*mLength; - QVector2D centerVec = (rightVec+leftVec)*0.5-lengthVec; - - return qSqrt(distSqrToLine((centerVec-widthVec).toPointF(), (centerVec+widthVec).toPointF(), pos)); -} - -/* inherits documentation from base class */ -void QCPItemBracket::draw(QCPPainter *painter) -{ - QVector2D leftVec(left->pixelPoint()); - QVector2D rightVec(right->pixelPoint()); - if (leftVec.toPoint() == rightVec.toPoint()) - return; - - QVector2D widthVec = (rightVec-leftVec)*0.5; - QVector2D lengthVec(-widthVec.y(), widthVec.x()); - lengthVec = lengthVec.normalized()*mLength; - QVector2D centerVec = (rightVec+leftVec)*0.5-lengthVec; - - QPolygon boundingPoly; - boundingPoly << leftVec.toPoint() << rightVec.toPoint() - << (rightVec-lengthVec).toPoint() << (leftVec-lengthVec).toPoint(); - QRect clip = clipRect().adjusted(-mainPen().widthF(), -mainPen().widthF(), mainPen().widthF(), mainPen().widthF()); - if (clip.intersects(boundingPoly.boundingRect())) - { - painter->setPen(mainPen()); - switch (mStyle) - { - case bsSquare: - { - painter->drawLine((centerVec+widthVec).toPointF(), (centerVec-widthVec).toPointF()); - painter->drawLine((centerVec+widthVec).toPointF(), (centerVec+widthVec+lengthVec).toPointF()); - painter->drawLine((centerVec-widthVec).toPointF(), (centerVec-widthVec+lengthVec).toPointF()); - break; - } - case bsRound: - { - painter->setBrush(Qt::NoBrush); - QPainterPath path; - path.moveTo((centerVec+widthVec+lengthVec).toPointF()); - path.cubicTo((centerVec+widthVec).toPointF(), (centerVec+widthVec).toPointF(), centerVec.toPointF()); - path.cubicTo((centerVec-widthVec).toPointF(), (centerVec-widthVec).toPointF(), (centerVec-widthVec+lengthVec).toPointF()); - painter->drawPath(path); - break; - } - case bsCurly: - { - painter->setBrush(Qt::NoBrush); - QPainterPath path; - path.moveTo((centerVec+widthVec+lengthVec).toPointF()); - path.cubicTo((centerVec+widthVec*1-lengthVec*0.8).toPointF(), (centerVec+0.4*widthVec+1*lengthVec).toPointF(), centerVec.toPointF()); - path.cubicTo((centerVec-0.4*widthVec+1*lengthVec).toPointF(), (centerVec-widthVec*1-lengthVec*0.8).toPointF(), (centerVec-widthVec+lengthVec).toPointF()); - painter->drawPath(path); - break; - } - case bsCalligraphic: - { - painter->setPen(Qt::NoPen); - painter->setBrush(QBrush(mainPen().color())); - QPainterPath path; - path.moveTo((centerVec+widthVec+lengthVec).toPointF()); - - path.cubicTo((centerVec+widthVec*1-lengthVec*0.8).toPointF(), (centerVec+0.4*widthVec+0.8*lengthVec).toPointF(), centerVec.toPointF()); - path.cubicTo((centerVec-0.4*widthVec+0.8*lengthVec).toPointF(), (centerVec-widthVec*1-lengthVec*0.8).toPointF(), (centerVec-widthVec+lengthVec).toPointF()); - - path.cubicTo((centerVec-widthVec*1-lengthVec*0.5).toPointF(), (centerVec-0.2*widthVec+1.2*lengthVec).toPointF(), (centerVec+lengthVec*0.2).toPointF()); - path.cubicTo((centerVec+0.2*widthVec+1.2*lengthVec).toPointF(), (centerVec+widthVec*1-lengthVec*0.5).toPointF(), (centerVec+widthVec+lengthVec).toPointF()); - - painter->drawPath(path); - break; - } - } - } -} - -/* inherits documentation from base class */ -QPointF QCPItemBracket::anchorPixelPoint(int anchorId) const -{ - QVector2D leftVec(left->pixelPoint()); - QVector2D rightVec(right->pixelPoint()); - if (leftVec.toPoint() == rightVec.toPoint()) - return leftVec.toPointF(); - - QVector2D widthVec = (rightVec-leftVec)*0.5; - QVector2D lengthVec(-widthVec.y(), widthVec.x()); - lengthVec = lengthVec.normalized()*mLength; - QVector2D centerVec = (rightVec+leftVec)*0.5-lengthVec; - - switch (anchorId) - { - case aiCenter: - return centerVec.toPointF(); - } - qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; - return QPointF(); -} - -/*! \internal - - Returns the pen that should be used for drawing lines. Returns mPen when the - item is not selected and mSelectedPen when it is. -*/ -QPen QCPItemBracket::mainPen() const -{ - return mSelected ? mSelectedPen : mPen; -} - - -// ================================================================================ -// =================== QCPItemTracer -// ================================================================================ - -/*! \class QCPItemTracer - \brief Item that sticks to QCPGraph data points - - \image html QCPItemTracer.png "Tracer example. Blue dotted circles are anchors, solid blue discs are positions." - - The tracer can be connected with a QCPGraph via \ref setGraph. Then it will automatically adopt - the coordinate axes of the graph and update its \a position to be on the graph's data. This means - the key stays controllable via \ref setGraphKey, but the value will follow the graph data. If a - QCPGraph is connected, note that setting the coordinates directly via \a position will have no - effect, i.e. be overriden in the next redraw (this is when the coodinate update happens). - - If the specified key in \ref setGraphKey is outside the key bounds of the graph, the tracer will - stay at the respective end of the graph. - - With \ref setInterpolating you may specify whether the tracer may only stay exactly on data - points or whether it interpolates data points linearly, if given a key that lies between two data - points of the graph. - - The tracer has different visual styles, see \ref setStyle. It is also possible to make the tracer - have no own visual appearance (set the style to \ref tsNone), and just connect other item - positions to the tracer \a position (used as an anchor) via \ref - QCPItemPosition::setParentAnchor. - - \note The tracer position is only automatically updated upon redraws. This means when, for - example, the data of the graph changes and you immediately afterwards (without a redraw) read the - \a position coordinates of the tracer, they will not reflect the updated data of the graph. In - this case you should call \ref updatePosition manually, prior to reading the tracer coordinates. -*/ - -/*! - Creates a tracer item and sets default values. - - The constructed item can be added to the plot with QCustomPlot::addItem. -*/ -QCPItemTracer::QCPItemTracer(QCustomPlot *parentPlot) : - QCPAbstractItem(parentPlot), - position(createPosition("position")), - mGraph(0) -{ - position->setCoords(0, 0); - - setBrush(Qt::NoBrush); - setSelectedBrush(Qt::NoBrush); - setPen(QPen(Qt::black)); - setSelectedPen(QPen(Qt::blue, 2)); - setStyle(tsCrosshair); - setSize(6); - setInterpolating(false); - setGraphKey(0); -} - -QCPItemTracer::~QCPItemTracer() -{ -} - -/*! - Sets the pen that will be used to draw the line of the tracer - - \see setSelectedPen, setBrush -*/ -void QCPItemTracer::setPen(const QPen &pen) -{ - mPen = pen; -} - -/*! - Sets the pen that will be used to draw the line of the tracer when selected - - \see setPen, setSelected -*/ -void QCPItemTracer::setSelectedPen(const QPen &pen) -{ - mSelectedPen = pen; -} - -/*! - Sets the brush that will be used to draw any fills of the tracer - - \see setSelectedBrush, setPen -*/ -void QCPItemTracer::setBrush(const QBrush &brush) -{ - mBrush = brush; -} - -/*! - Sets the brush that will be used to draw any fills of the tracer, when selected. - - \see setBrush, setSelected -*/ -void QCPItemTracer::setSelectedBrush(const QBrush &brush) -{ - mSelectedBrush = brush; -} - -/*! - Sets the size of the tracer in pixels, if the style supports setting a size (e.g. \ref tsSquare - does, \ref tsCrosshair does not). -*/ -void QCPItemTracer::setSize(double size) -{ - mSize = size; -} - -/*! - Sets the style/visual appearance of the tracer. - - If you only want to use the tracer \a position as an anchor for other items, set \a style to - \ref tsNone. -*/ -void QCPItemTracer::setStyle(QCPItemTracer::TracerStyle style) -{ - mStyle = style; -} - -/*! - Sets the QCPGraph this tracer sticks to. The tracer \a position will be set to type - QCPItemPosition::ptPlotCoords and the axes will be set to the axes of \a graph. - - To free the tracer from any graph, set \a graph to 0. The tracer \a position can then be placed - freely like any other item position. This is the state the tracer will assume when its graph gets - deleted while still attached to it. - - \see setGraphKey -*/ -void QCPItemTracer::setGraph(QCPGraph *graph) -{ - if (graph) - { - if (graph->parentPlot() == mParentPlot) - { - position->setType(QCPItemPosition::ptPlotCoords); - position->setAxes(graph->keyAxis(), graph->valueAxis()); - mGraph = graph; - updatePosition(); - } else - qDebug() << Q_FUNC_INFO << "graph isn't in same QCustomPlot instance as this item"; - } else - { - mGraph = 0; - } -} - -/*! - Sets the key of the graph's data point the tracer will be positioned at. This is the only free - cordinate of a tracer when attached to a graph. - - Depending on \ref setInterpolating, the tracer will be either positioned on the data point - closest to \a key, or will stay exactly at \a key and interpolate the value linearly. - - \see setGraph, setInterpolating -*/ -void QCPItemTracer::setGraphKey(double key) -{ - mGraphKey = key; -} - -/*! - Sets whether the value of the graph's data points shall be interpolated, when positioning the - tracer. - - If \a enabled is set to false and a key is given with \ref setGraphKey, the tracer is placed on - the data point of the graph which is closest to the key, but which is not necessarily exactly - there. If \a enabled is true, the tracer will be positioned exactly at the specified key, and - the appropriate value will be interpolated from the graph's data points linearly. - - \see setGraph, setGraphKey -*/ -void QCPItemTracer::setInterpolating(bool enabled) -{ - mInterpolating = enabled; -} - -/* inherits documentation from base class */ -double QCPItemTracer::selectTest(const QPointF &pos) const -{ - if (!mVisible || mStyle == tsNone) - return -1; - - QPointF center(position->pixelPoint()); - double w = mSize/2.0; - QRect clip = clipRect(); - switch (mStyle) - { - case tsNone: return -1; - case tsPlus: - { - if (clipRect().intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) - return qSqrt(qMin(distSqrToLine(center+QPointF(-w, 0), center+QPointF(w, 0), pos), - distSqrToLine(center+QPointF(0, -w), center+QPointF(0, w), pos))); - break; - } - case tsCrosshair: - { - return qSqrt(qMin(distSqrToLine(QPointF(clip.left(), center.y()), QPointF(clip.right(), center.y()), pos), - distSqrToLine(QPointF(center.x(), clip.top()), QPointF(center.x(), clip.bottom()), pos))); - break; - } - case tsCircle: - { - if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) - { - // distance to border: - double centerDist = QVector2D(center-pos).length(); - double circleLine = w; - double result = qAbs(centerDist-circleLine); - // filled ellipse, allow click inside to count as hit: - if (result > mParentPlot->selectionTolerance()*0.99 && mBrush.style() != Qt::NoBrush && mBrush.color().alpha() != 0) - { - if (centerDist <= circleLine) - result = mParentPlot->selectionTolerance()*0.99; - } - return result; - } - break; - } - case tsSquare: - { - if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) - { - QRectF rect = QRectF(center-QPointF(w, w), center+QPointF(w, w)); - bool filledRect = mBrush.style() != Qt::NoBrush && mBrush.color().alpha() != 0; - return rectSelectTest(rect, pos, filledRect); - } - break; - } - } - return -1; -} - -/* inherits documentation from base class */ -void QCPItemTracer::draw(QCPPainter *painter) -{ - updatePosition(); - if (mStyle == tsNone) - return; - - painter->setPen(mainPen()); - painter->setBrush(mainBrush()); - QPointF center(position->pixelPoint()); - double w = mSize/2.0; - QRect clip = clipRect(); - switch (mStyle) - { - case tsNone: return; - case tsPlus: - { - if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) - { - painter->drawLine(QLineF(center+QPointF(-w, 0), center+QPointF(w, 0))); - painter->drawLine(QLineF(center+QPointF(0, -w), center+QPointF(0, w))); - } - break; - } - case tsCrosshair: - { - if (center.y() > clip.top() && center.y() < clip.bottom()) - painter->drawLine(QLineF(clip.left(), center.y(), clip.right(), center.y())); - if (center.x() > clip.left() && center.x() < clip.right()) - painter->drawLine(QLineF(center.x(), clip.top(), center.x(), clip.bottom())); - break; - } - case tsCircle: - { - if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) - painter->drawEllipse(center, w, w); - break; - } - case tsSquare: - { - if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) - painter->drawRect(QRectF(center-QPointF(w, w), center+QPointF(w, w))); - break; - } - } -} - -/*! - If the tracer is connected with a graph (\ref setGraph), this function updates the tracer's \a - position to reside on the graph data, depending on the configured key (\ref setGraphKey). - - It is called automatically on every redraw and normally doesn't need to be called manually. One - exception is when you want to read the tracer coordinates via \a position and are not sure that - the graph's data (or the tracer key with \ref setGraphKey) hasn't changed since the last redraw. - In that situation, call this function before accessing \a position, to make sure you don't get - out-of-date coordinates. - - If there is no graph set on this tracer, this function does nothing. -*/ -void QCPItemTracer::updatePosition() -{ - if (mGraph) - { - if (mParentPlot->hasPlottable(mGraph)) - { - if (mGraph->data()->size() > 1) - { - QCPDataMap::const_iterator first = mGraph->data()->constBegin(); - QCPDataMap::const_iterator last = mGraph->data()->constEnd()-1; - if (mGraphKey < first.key()) - position->setCoords(first.key(), first.value().value); - else if (mGraphKey > last.key()) - position->setCoords(last.key(), last.value().value); - else - { - QCPDataMap::const_iterator it = first; - it = mGraph->data()->lowerBound(mGraphKey); - if (it != first) // mGraphKey is somewhere between iterators - { - QCPDataMap::const_iterator prevIt = it-1; - if (mInterpolating) - { - // interpolate between iterators around mGraphKey: - double slope = (it.value().value-prevIt.value().value)/(it.key()-prevIt.key()); - position->setCoords(mGraphKey, (mGraphKey-prevIt.key())*slope+prevIt.value().value); - } else - { - // find iterator with key closest to mGraphKey: - if (mGraphKey < (prevIt.key()+it.key())*0.5) - it = prevIt; - position->setCoords(it.key(), it.value().value); - } - } else // mGraphKey is exactly on first iterator - position->setCoords(it.key(), it.value().value); - } - } else if (mGraph->data()->size() == 1) - { - QCPDataMap::const_iterator it = mGraph->data()->constBegin(); - position->setCoords(it.key(), it.value().value); - } else - qDebug() << Q_FUNC_INFO << "graph has no data"; - } else - qDebug() << Q_FUNC_INFO << "graph not contained in QCustomPlot instance (anymore)"; - } -} - -/*! \internal - - Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected - and mSelectedPen when it is. -*/ -QPen QCPItemTracer::mainPen() const -{ - return mSelected ? mSelectedPen : mPen; -} - -/*! \internal - - Returns the brush that should be used for drawing fills of the item. Returns mBrush when the item - is not selected and mSelectedBrush when it is. -*/ -QBrush QCPItemTracer::mainBrush() const -{ - return mSelected ? mSelectedBrush : mBrush; -} - - - - - - - diff --git a/wfdisplay/wfdisplay/QCustomPlot/qcustomplot.h b/wfdisplay/wfdisplay/QCustomPlot/qcustomplot.h deleted file mode 100644 --- a/wfdisplay/wfdisplay/QCustomPlot/qcustomplot.h +++ /dev/null @@ -1,2171 +0,0 @@ -/*************************************************************************** -** ** -** QCustomPlot, a simple to use, modern plotting widget for Qt ** -** Copyright (C) 2012 Emanuel Eichhammer ** -** ** -** This program is free software: you can redistribute it and/or modify ** -** it under the terms of the GNU General Public License as published by ** -** the Free Software Foundation, either version 3 of the License, or ** -** (at your option) any later version. ** -** ** -** This program is distributed in the hope that it will be useful, ** -** but WITHOUT ANY WARRANTY; without even the implied warranty of ** -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** -** GNU General Public License for more details. ** -** ** -** You should have received a copy of the GNU General Public License ** -** along with this program. If not, see http://www.gnu.org/licenses/. ** -** ** -**************************************************************************** -** Author: Emanuel Eichhammer ** -** Website/Contact: http://www.WorksLikeClockwork.com/ ** -** Date: 09.06.12 ** -****************************************************************************/ - -/*! \file */ - -#ifndef QCUSTOMPLOT_H -#define QCUSTOMPLOT_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// decl definitions for shared library compilation/usage: -#if defined(QCUSTOMPLOT_COMPILE_LIBRARY) -# define QCP_LIB_DECL Q_DECL_EXPORT -#elif defined(QCUSTOMPLOT_USE_LIBRARY) -# define QCP_LIB_DECL Q_DECL_IMPORT -#else -# define QCP_LIB_DECL -#endif - -class QCustomPlot; -class QCPLegend; -class QCPRange; -class QCPLayerable; -class QCPAbstractItem; -class QCPItemPosition; -class QCPAxis; -class QCPData; - -/*! - The QCP Namespace contains general enums and QFlags -*/ -namespace QCP -{ -/*! - Defines the symbol used for scatter points. - - On plottables/items that draw scatters, the sizes of these visualizations (with exception of \ref - QCP::ssDot and \ref QCP::ssPixmap) can be controlled with a \a setScatterSize function. Scatters - are in general drawn with the main pen set on the plottable/item. - - \see QCPGraph::setScatterStyle, QCPStatisticalBox::setOutlierStyle -*/ -enum ScatterStyle { ssNone ///< no scatter symbols are drawn (e.g. in QCPGraph, data only represented with lines) - ,ssDot ///< a single pixel - ,ssCross ///< a cross (x) - ,ssPlus ///< a plus (+) - ,ssCircle ///< a circle which is not filled - ,ssDisc ///< a circle which is filled with the color of the pen (not the brush!) - ,ssSquare ///< a square which is not filled - ,ssDiamond ///< a diamond which is not filled - ,ssStar ///< a star with eight arms, i.e. a combination of cross and plus - ,ssTriangle ///< an equilateral triangle which is not filled, standing on baseline - ,ssTriangleInverted ///< an equilateral triangle which is not filled, standing on corner - ,ssCrossSquare ///< a square which is not filled, with a cross inside - ,ssPlusSquare ///< a square which is not filled, with a plus inside - ,ssCrossCircle ///< a circle which is not filled, with a cross inside - ,ssPlusCircle ///< a circle which is not filled, with a plus inside - ,ssPeace ///< a circle which is not filled, with one vertical and two downward diagonal lines - ,ssPixmap ///< a custom pixmap specified by setScatterPixmap, centered on the data point coordinates - }; - -/*! - Defines what elements of a plot can be forcibly drawn antialiased/not antialiased. If an - element is neither forcibly drawn antialiased nor forcibly drawn not antialiased, it is up to - the respective element how it is drawn. Typically it provides a \a setAntialiased function for - this. - - \c AntialiasedElements is a flag of or-combined elements of this enum type. - - \see QCustomPlot::setAntialiasedElements, QCustomPlot::setNotAntialiasedElements -*/ -enum AntialiasedElement { aeAxes = 0x0001 ///< 0x0001 Axis base line and tick marks - ,aeGrid = 0x0002 ///< 0x0002 Grid lines - ,aeSubGrid = 0x0004 ///< 0x0004 Sub grid lines - ,aeLegend = 0x0008 ///< 0x0008 Legend box - ,aeLegendItems = 0x0010 ///< 0x0010 Legend items - ,aePlottables = 0x0020 ///< 0x0020 Main lines of plottables (excluding error bars, see element \ref aeErrorBars) - ,aeItems = 0x0040 ///< 0x0040 Main lines of items - ,aeScatters = 0x0080 ///< 0x0080 Scatter symbols of plottables (excluding scatter symbols of type ssPixmap) - ,aeErrorBars = 0x0100 ///< 0x0100 Error bars - ,aeFills = 0x0200 ///< 0x0200 Borders of fills (e.g. under or between graphs) - ,aeZeroLine = 0x0400 ///< 0x0400 Zero-lines, see \ref QCPAxis::setZeroLinePen - ,aeAll = 0xFFFF ///< 0xFFFF All elements - ,aeNone = 0x0000 ///< 0x0000 No elements - }; -Q_DECLARE_FLAGS(AntialiasedElements, AntialiasedElement) - -/*! - Defines plotting hints that control various aspects of the quality and speed of plotting. - \see QCustomPlot::setPlottingHints -*/ -enum PlottingHint { phNone = 0x000 ///< 0x000 No hints are set - ,phFastPolylines = 0x001 ///< 0x001 Graph/Curve lines are drawn with a faster method. This reduces the quality - ///< especially of the line segment joins. (Only used for solid line pens.) - ,phForceRepaint = 0x002 ///< 0x002 causes an immediate repaint() instead of a soft update() when QCustomPlot::replot() is called. This is set by default - ///< on Windows-Systems to prevent the plot from freezing on fast consecutive replots (e.g. user drags ranges with mouse). - }; -Q_DECLARE_FLAGS(PlottingHints, PlottingHint) -} - -Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::AntialiasedElements) -Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::PlottingHints) - -class QCP_LIB_DECL QCPData -{ -public: - QCPData(); - QCPData(double key, double value); - double key, value; - double keyErrorPlus, keyErrorMinus; - double valueErrorPlus, valueErrorMinus; -}; -Q_DECLARE_TYPEINFO(QCPData, Q_MOVABLE_TYPE); - -/*! \typedef QCPDataMap - Container for storing QCPData items in a sorted fashion. The key of the map - is the key member of the QCPData instance. - - This is the container in which QCPGraph holds its data. - \see QCPData, QCPGraph::setData -*/ -typedef QMap QCPDataMap; -typedef QMapIterator QCPDataMapIterator; -typedef QMutableMapIterator QCPDataMutableMapIterator; - -class QCP_LIB_DECL QCPCurveData -{ -public: - QCPCurveData(); - QCPCurveData(double t, double key, double value); - double t, key, value; -}; -Q_DECLARE_TYPEINFO(QCPCurveData, Q_MOVABLE_TYPE); - -/*! \typedef QCPCurveDataMap - Container for storing QCPCurveData items in a sorted fashion. The key of the map - is the t member of the QCPCurveData instance. - - This is the container in which QCPCurve holds its data. - \see QCPCurveData, QCPCurve::setData -*/ - -typedef QMap QCPCurveDataMap; -typedef QMapIterator QCPCurveDataMapIterator; -typedef QMutableMapIterator QCPCurveDataMutableMapIterator; - -class QCP_LIB_DECL QCPBarData -{ -public: - QCPBarData(); - QCPBarData(double key, double value); - double key, value; -}; -Q_DECLARE_TYPEINFO(QCPBarData, Q_MOVABLE_TYPE); - -/*! \typedef QCPBarDataMap - Container for storing QCPBarData items in a sorted fashion. The key of the map - is the key member of the QCPBarData instance. - - This is the container in which QCPBars holds its data. - \see QCPBarData, QCPBars::setData -*/ -typedef QMap QCPBarDataMap; -typedef QMapIterator QCPBarDataMapIterator; -typedef QMutableMapIterator QCPBarDataMutableMapIterator; - -class QCP_LIB_DECL QCPPainter : public QPainter -{ -public: - QCPPainter(); - QCPPainter(QPaintDevice *device); - ~QCPPainter(); - - // getters: - QPixmap scatterPixmap() const { return mScatterPixmap; } - bool antialiasing() const { return testRenderHint(QPainter::Antialiasing); } - bool pdfExportMode() const { return mPdfExportMode; } - bool scaledExportMode() const { return mScaledExportMode; } - - // setters: - void setScatterPixmap(const QPixmap pm); - void setAntialiasing(bool enabled); - void setPdfExportMode(bool enabled); - void setScaledExportMode(bool enabled); - - // methods hiding non-virtual base class functions (QPainter bug workarounds): - void setPen(const QPen &pen); - void setPen(const QColor &color); - void setPen(Qt::PenStyle penStyle); - void drawLine(const QLineF &line); - void drawLine(const QPointF &p1, const QPointF &p2) {drawLine(QLineF(p1, p2));} - void save(); - void restore(); - - // helpers: - void fixScaledPen(); - void drawScatter(double x, double y, double size, QCP::ScatterStyle style); - -protected: - QPixmap mScatterPixmap; - bool mScaledExportMode; - bool mPdfExportMode; - bool mIsAntialiasing; - QStack mAntialiasingStack; -}; - -class QCP_LIB_DECL QCPLineEnding -{ -public: - /*! - Defines the type of ending decoration for line-like items, e.g. an arrow. - - \image html QCPLineEnding.png - - The width and length of these decorations can be controlled with the functions \ref setWidth - and \ref setLength. Some decorations like \ref esDisc, \ref esSquare, \ref esDiamond and \ref esBar only - support a width, the length property is ignored. - - \see QCPItemLine::setHead, QCPItemLine::setTail, QCPItemCurve::setHead, QCPItemCurve::setTail - */ - enum EndingStyle { esNone ///< No ending decoration - ,esFlatArrow ///< A filled arrow head with a straight/flat back (a triangle) - ,esSpikeArrow ///< A filled arrow head with an indented back - ,esLineArrow ///< A non-filled arrow head with open back - ,esDisc ///< A filled circle - ,esSquare ///< A filled square - ,esDiamond ///< A filled diamond (45° rotated square) - ,esBar ///< A bar perpendicular to the line - }; - - QCPLineEnding(); - QCPLineEnding(EndingStyle style, double width=8, double length=10, bool inverted=false); - - // getters: - EndingStyle style() const { return mStyle; } - double width() const { return mWidth; } - double length() const { return mLength; } - bool inverted() const { return mInverted; } - - // setters: - void setStyle(EndingStyle style); - void setWidth(double width); - void setLength(double length); - void setInverted(bool inverted); - - // non-property methods: - double boundingDistance() const; - void draw(QCPPainter *painter, const QVector2D &pos, const QVector2D &dir) const; - void draw(QCPPainter *painter, const QVector2D &pos, double angle) const; - -protected: - EndingStyle mStyle; - double mWidth, mLength; - bool mInverted; -}; -Q_DECLARE_TYPEINFO(QCPLineEnding, Q_MOVABLE_TYPE); - -class QCP_LIB_DECL QCPLayer -{ -public: - QCPLayer(QCustomPlot* parentPlot, const QString &layerName); - ~QCPLayer(); - - // getters: - QCustomPlot *parentPlot() const { return mParentPlot; } - QString name() const { return mName; } - int index() const; - QList children() const { return mChildren; } - -protected: - QCustomPlot *mParentPlot; - QString mName; - QList mChildren; - - void addChild(QCPLayerable *layerable, bool prepend); - void removeChild(QCPLayerable *layerable); - -private: - Q_DISABLE_COPY(QCPLayer) - - friend class QCPLayerable; -}; - -class QCP_LIB_DECL QCPLayerable : public QObject -{ - Q_OBJECT -public: - QCPLayerable(QCustomPlot *parentPlot); - ~QCPLayerable(); - - // getters: - bool visible() const { return mVisible; } - QCustomPlot *parentPlot() const { return mParentPlot; } - QCPLayer *layer() const { return mLayer; } - bool antialiased() const { return mAntialiased; } - - // setters: - void setVisible(bool on); - bool setLayer(QCPLayer *layer); - bool setLayer(const QString &layerName); - void setAntialiased(bool enabled); - -protected: - bool mVisible; - QCustomPlot *mParentPlot; - QCPLayer *mLayer; - bool mAntialiased; - - // non-property methods: - bool moveToLayer(QCPLayer *layer, bool prepend); - - void applyAntialiasingHint(QCPPainter *painter, bool localAntialiased, QCP::AntialiasedElement overrideElement) const; - virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const = 0; - virtual QRect clipRect() const; - virtual void draw(QCPPainter *painter) = 0; - -private: - Q_DISABLE_COPY(QCPLayerable) - - friend class QCustomPlot; -}; - -class QCP_LIB_DECL QCPAbstractPlottable : public QCPLayerable -{ - Q_OBJECT -public: - QCPAbstractPlottable(QCPAxis *keyAxis, QCPAxis *valueAxis); - virtual ~QCPAbstractPlottable() {} - - // getters: - QString name() const { return mName; } - bool antialiasedFill() const { return mAntialiasedFill; } - bool antialiasedScatters() const { return mAntialiasedScatters; } - bool antialiasedErrorBars() const { return mAntialiasedErrorBars; } - QPen pen() const { return mPen; } - QPen selectedPen() const { return mSelectedPen; } - QBrush brush() const { return mBrush; } - QBrush selectedBrush() const { return mSelectedBrush; } - QCPAxis *keyAxis() const { return mKeyAxis; } - QCPAxis *valueAxis() const { return mValueAxis; } - bool selectable() const { return mSelectable; } - bool selected() const { return mSelected; } - - // setters: - void setName(const QString &name); - void setAntialiasedFill(bool enabled); - void setAntialiasedScatters(bool enabled); - void setAntialiasedErrorBars(bool enabled); - void setPen(const QPen &pen); - void setSelectedPen(const QPen &pen); - void setBrush(const QBrush &brush); - void setSelectedBrush(const QBrush &brush); - void setKeyAxis(QCPAxis *axis); - void setValueAxis(QCPAxis *axis); - void setSelectable(bool selectable); - void setSelected(bool selected); - - // non-property methods: - void rescaleAxes(bool onlyEnlarge=false) const; - void rescaleKeyAxis(bool onlyEnlarge=false) const; - void rescaleValueAxis(bool onlyEnlarge=false) const; - virtual void clearData() = 0; - virtual double selectTest(const QPointF &pos) const = 0; - virtual bool addToLegend(); - virtual bool removeFromLegend() const; - -signals: - void selectionChanged(bool selected); - -protected: - /*! - Represents negative and positive sign domain for passing to \ref getKeyRange and \ref getValueRange. - */ - enum SignDomain { sdNegative ///< The negative sign domain, i.e. numbers smaller than zero - ,sdBoth ///< Both sign domains, including zero, i.e. all (rational) numbers - ,sdPositive ///< The positive sign domain, i.e. numbers greater than zero - }; - QString mName; - bool mAntialiasedFill, mAntialiasedScatters, mAntialiasedErrorBars; - QPen mPen, mSelectedPen; - QBrush mBrush, mSelectedBrush; - QCPAxis *mKeyAxis, *mValueAxis; - bool mSelected, mSelectable; - - virtual QRect clipRect() const; - virtual void draw(QCPPainter *painter) = 0; - virtual void drawLegendIcon(QCPPainter *painter, const QRect &rect) const = 0; - virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const = 0; - virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const = 0; - - // painting and coordinate transformation helpers: - void coordsToPixels(double key, double value, double &x, double &y) const; - const QPointF coordsToPixels(double key, double value) const; - void pixelsToCoords(double x, double y, double &key, double &value) const; - void pixelsToCoords(const QPointF &pixelPos, double &key, double &value) const; - QPen mainPen() const; - QBrush mainBrush() const; - void applyDefaultAntialiasingHint(QCPPainter *painter) const; - void applyFillAntialiasingHint(QCPPainter *painter) const; - void applyScattersAntialiasingHint(QCPPainter *painter) const; - void applyErrorBarsAntialiasingHint(QCPPainter *painter) const; - - // selection test helpers: - double distSqrToLine(const QPointF &start, const QPointF &end, const QPointF &point) const; - -private: - Q_DISABLE_COPY(QCPAbstractPlottable) - - friend class QCustomPlot; - friend class QCPPlottableLegendItem; -}; - -class QCP_LIB_DECL QCPGraph : public QCPAbstractPlottable -{ - Q_OBJECT -public: - /*! - Defines how the graph's line is represented visually in the plot. The line is drawn with the - current pen of the graph (\ref setPen). - \see setLineStyle - */ - enum LineStyle { lsNone ///< data points are not connected with any lines (e.g. data only represented - ///< with symbols according to the scatter style, see \ref setScatterStyle) - ,lsLine ///< data points are connected by a straight line - ,lsStepLeft ///< line is drawn as steps where the step height is the value of the left data point - ,lsStepRight ///< line is drawn as steps where the step height is the value of the right data point - ,lsStepCenter ///< line is drawn as steps where the step is in between two data points - ,lsImpulse ///< each data point is represented by a line parallel to the value axis, which reaches from the data point to the zero-value-line - }; - Q_ENUMS(LineStyle) - /*! - Defines what kind of error bars are drawn for each data point - */ - enum ErrorType { etNone ///< No error bars are shown - ,etKey ///< Error bars for the key dimension of the data point are shown - ,etValue ///< Error bars for the value dimension of the data point are shown - ,etBoth ///< Error bars for both key and value dimensions of the data point are shown - }; - Q_ENUMS(ErrorType) - - explicit QCPGraph(QCPAxis *keyAxis, QCPAxis *valueAxis); - virtual ~QCPGraph(); - - // getters: - const QCPDataMap *data() const { return mData; } - LineStyle lineStyle() const { return mLineStyle; } - QCP::ScatterStyle scatterStyle() const { return mScatterStyle; } - double scatterSize() const { return mScatterSize; } - const QPixmap scatterPixmap() const { return mScatterPixmap; } - ErrorType errorType() const { return mErrorType; } - QPen errorPen() const { return mErrorPen; } - double errorBarSize() const { return mErrorBarSize; } - bool errorBarSkipSymbol() const { return mErrorBarSkipSymbol; } - QCPGraph *channelFillGraph() const { return mChannelFillGraph; } - - // setters: - void setData(QCPDataMap *data, bool copy=false); - void setData(const QVector &key, const QVector &value); - void setDataKeyError(const QVector &key, const QVector &value, const QVector &keyError); - void setDataKeyError(const QVector &key, const QVector &value, const QVector &keyErrorMinus, const QVector &keyErrorPlus); - void setDataValueError(const QVector &key, const QVector &value, const QVector &valueError); - void setDataValueError(const QVector &key, const QVector &value, const QVector &valueErrorMinus, const QVector &valueErrorPlus); - void setDataBothError(const QVector &key, const QVector &value, const QVector &keyError, const QVector &valueError); - void setDataBothError(const QVector &key, const QVector &value, const QVector &keyErrorMinus, const QVector &keyErrorPlus, const QVector &valueErrorMinus, const QVector &valueErrorPlus); - void setLineStyle(LineStyle ls); - void setScatterStyle(QCP::ScatterStyle ss); - void setScatterSize(double size); - void setScatterPixmap(const QPixmap &pixmap); - void setErrorType(ErrorType errorType); - void setErrorPen(const QPen &pen); - void setErrorBarSize(double size); - void setErrorBarSkipSymbol(bool enabled); - void setChannelFillGraph(QCPGraph *targetGraph); - - // non-property methods: - void addData(const QCPDataMap &dataMap); - void addData(const QCPData &data); - void addData(double key, double value); - void addData(const QVector &keys, const QVector &values); - void removeDataBefore(double key); - void removeDataAfter(double key); - void removeData(double fromKey, double toKey); - void removeData(double key); - virtual void clearData(); - virtual double selectTest(const QPointF &pos) const; - using QCPAbstractPlottable::rescaleAxes; - using QCPAbstractPlottable::rescaleKeyAxis; - using QCPAbstractPlottable::rescaleValueAxis; - virtual void rescaleAxes(bool onlyEnlarge, bool includeErrorBars) const; // overloads base class interface - virtual void rescaleKeyAxis(bool onlyEnlarge, bool includeErrorBars) const; // overloads base class interface - virtual void rescaleValueAxis(bool onlyEnlarge, bool includeErrorBars) const; // overloads base class interface - -protected: - QCPDataMap *mData; - QPen mErrorPen; - LineStyle mLineStyle; - QCP::ScatterStyle mScatterStyle; - double mScatterSize; - QPixmap mScatterPixmap; - ErrorType mErrorType; - double mErrorBarSize; - bool mErrorBarSkipSymbol; - QCPGraph *mChannelFillGraph; - - virtual void draw(QCPPainter *painter); - virtual void drawLegendIcon(QCPPainter *painter, const QRect &rect) const; - - // functions to generate plot data points in pixel coordinates: - void getPlotData(QVector *lineData, QVector *pointData) const; - // plot style specific functions to generate plot data, used by getPlotData: - void getScatterPlotData(QVector *pointData) const; - void getLinePlotData(QVector *lineData, QVector *pointData) const; - void getStepLeftPlotData(QVector *lineData, QVector *pointData) const; - void getStepRightPlotData(QVector *lineData, QVector *pointData) const; - void getStepCenterPlotData(QVector *lineData, QVector *pointData) const; - void getImpulsePlotData(QVector *lineData, QVector *pointData) const; - - // helper functions for drawing: - void drawFill(QCPPainter *painter, QVector *lineData) const; - void drawScatterPlot(QCPPainter *painter, QVector *pointData) const; - void drawLinePlot(QCPPainter *painter, QVector *lineData) const; - void drawImpulsePlot(QCPPainter *painter, QVector *lineData) const; - void drawError(QCPPainter *painter, double x, double y, const QCPData &data) const; - - // helper functions: - void getVisibleDataBounds(QCPDataMap::const_iterator &lower, QCPDataMap::const_iterator &upper, int &count) const; - void addFillBasePoints(QVector *lineData) const; - void removeFillBasePoints(QVector *lineData) const; - QPointF lowerFillBasePoint(double lowerKey) const; - QPointF upperFillBasePoint(double upperKey) const; - const QPolygonF getChannelFillPolygon(const QVector *lineData) const; - int findIndexBelowX(const QVector *data, double x) const; - int findIndexAboveX(const QVector *data, double x) const; - int findIndexBelowY(const QVector *data, double y) const; - int findIndexAboveY(const QVector *data, double y) const; - double pointDistance(const QPointF &pixelPoint) const; - virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; - virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; - virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain, bool includeErrors) const; // overloads base class interface - virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain, bool includeErrors) const; // overloads base class interface - - friend class QCustomPlot; - friend class QCPLegend; -}; - -class QCP_LIB_DECL QCPCurve : public QCPAbstractPlottable -{ - Q_OBJECT -public: - /*! - Defines how the curve's line is represented visually in the plot. The line is drawn with the - current pen of the curve (\ref setPen). - \see setLineStyle - */ - enum LineStyle { lsNone, ///< No line is drawn between data points (e.g. only scatters) - lsLine ///< Data points are connected with a straight line - }; - explicit QCPCurve(QCPAxis *keyAxis, QCPAxis *valueAxis); - virtual ~QCPCurve(); - - // getters: - const QCPCurveDataMap *data() const { return mData; } - QCP::ScatterStyle scatterStyle() const { return mScatterStyle; } - double scatterSize() const { return mScatterSize; } - QPixmap scatterPixmap() const { return mScatterPixmap; } - LineStyle lineStyle() const { return mLineStyle; } - - // setters: - void setData(QCPCurveDataMap *data, bool copy=false); - void setData(const QVector &t, const QVector &key, const QVector &value); - void setData(const QVector &key, const QVector &value); - void setScatterStyle(QCP::ScatterStyle style); - void setScatterSize(double size); - void setScatterPixmap(const QPixmap &pixmap); - void setLineStyle(LineStyle style); - - // non-property methods: - void addData(const QCPCurveDataMap &dataMap); - void addData(const QCPCurveData &data); - void addData(double t, double key, double value); - void addData(double key, double value); - void addData(const QVector &ts, const QVector &keys, const QVector &values); - void removeDataBefore(double t); - void removeDataAfter(double t); - void removeData(double fromt, double tot); - void removeData(double t); - virtual void clearData(); - virtual double selectTest(const QPointF &pos) const; - -protected: - QCPCurveDataMap *mData; - QCP::ScatterStyle mScatterStyle; - double mScatterSize; - QPixmap mScatterPixmap; - LineStyle mLineStyle; - - virtual void draw(QCPPainter *painter); - virtual void drawLegendIcon(QCPPainter *painter, const QRect &rect) const; - // drawing helpers: - virtual void drawScatterPlot(QCPPainter *painter, const QVector *pointData) const; - - // helper functions: - void getCurveData(QVector *lineData) const; - double pointDistance(const QPointF &pixelPoint) const; - - QPointF outsideCoordsToPixels(double key, double value, int region) const; - virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; - virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; - - friend class QCustomPlot; - friend class QCPLegend; -}; - -class QCP_LIB_DECL QCPBars : public QCPAbstractPlottable -{ - Q_OBJECT -public: - explicit QCPBars(QCPAxis *keyAxis, QCPAxis *valueAxis); - virtual ~QCPBars(); - - // getters: - double width() const { return mWidth; } - QCPBars *barBelow() const { return mBarBelow; } - QCPBars *barAbove() const { return mBarAbove; } - const QCPBarDataMap *data() const { return mData; } - - // setters: - void setWidth(double width); - void setData(QCPBarDataMap *data, bool copy=false); - void setData(const QVector &key, const QVector &value); - - // non-property methods: - void moveBelow(QCPBars *bars); - void moveAbove(QCPBars *bars); - void addData(const QCPBarDataMap &dataMap); - void addData(const QCPBarData &data); - void addData(double key, double value); - void addData(const QVector &keys, const QVector &values); - void removeDataBefore(double key); - void removeDataAfter(double key); - void removeData(double fromKey, double toKey); - void removeData(double key); - virtual void clearData(); - virtual double selectTest(const QPointF &pos) const; - -protected: - QCPBarDataMap *mData; - double mWidth; - QCPBars *mBarBelow, *mBarAbove; - - virtual void draw(QCPPainter *painter); - virtual void drawLegendIcon(QCPPainter *painter, const QRect &rect) const; - - QPolygonF getBarPolygon(double key, double value) const; - double getBaseValue(double key, bool positive) const; - static void connectBars(QCPBars* lower, QCPBars* upper); - virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; - virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; - - friend class QCustomPlot; - friend class QCPLegend; -}; - -class QCP_LIB_DECL QCPStatisticalBox : public QCPAbstractPlottable -{ - Q_OBJECT -public: - explicit QCPStatisticalBox(QCPAxis *keyAxis, QCPAxis *valueAxis); - virtual ~QCPStatisticalBox(); - - // getters: - double key() const { return mKey; } - double minimum() const { return mMinimum; } - double lowerQuartile() const { return mLowerQuartile; } - double median() const { return mMedian; } - double upperQuartile() const { return mUpperQuartile; } - double maximum() const { return mMaximum; } - QVector outliers() const { return mOutliers; } - double width() const { return mWidth; } - double whiskerWidth() const { return mWhiskerWidth; } - QPen whiskerPen() const { return mWhiskerPen; } - QPen whiskerBarPen() const { return mWhiskerBarPen; } - QPen medianPen() const { return mMedianPen; } - double outlierSize() const { return mOutlierSize; } - QPen outlierPen() const { return mOutlierPen; } - QCP::ScatterStyle outlierStyle() const { return mOutlierStyle; } - - // setters: - void setKey(double key); - void setMinimum(double value); - void setLowerQuartile(double value); - void setMedian(double value); - void setUpperQuartile(double value); - void setMaximum(double value); - void setOutliers(const QVector &values); - void setData(double key, double minimum, double lowerQuartile, double median, double upperQuartile, double maximum); - void setWidth(double width); - void setWhiskerWidth(double width); - void setWhiskerPen(const QPen &pen); - void setWhiskerBarPen(const QPen &pen); - void setMedianPen(const QPen &pen); - void setOutlierSize(double pixels); - void setOutlierPen(const QPen &pen); - void setOutlierStyle(QCP::ScatterStyle style); - - // non-property methods: - virtual void clearData(); - virtual double selectTest(const QPointF &pos) const; - -protected: - QVector mOutliers; - double mKey, mMinimum, mLowerQuartile, mMedian, mUpperQuartile, mMaximum; - double mWidth; - double mWhiskerWidth; - double mOutlierSize; - QPen mWhiskerPen, mWhiskerBarPen, mOutlierPen, mMedianPen; - QCP::ScatterStyle mOutlierStyle; - - virtual void draw(QCPPainter *painter); - virtual void drawLegendIcon(QCPPainter *painter, const QRect &rect) const; - - virtual void drawQuartileBox(QCPPainter *painter, QRectF *quartileBox=0) const; - virtual void drawMedian(QCPPainter *painter) const; - virtual void drawWhiskers(QCPPainter *painter) const; - virtual void drawOutliers(QCPPainter *painter) const; - virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; - virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; - - friend class QCustomPlot; - friend class QCPLegend; -}; - -class QCP_LIB_DECL QCPItemAnchor -{ -public: - QCPItemAnchor(QCustomPlot *parentPlot, QCPAbstractItem *parentItem, const QString name, int anchorId=-1); - virtual ~QCPItemAnchor(); - - QString name() const { return mName; } - virtual QPointF pixelPoint() const; - -protected: - QCustomPlot *mParentPlot; - QCPAbstractItem *mParentItem; - int mAnchorId; - QString mName; - // non-property members: - QSet mChildren; - - void addChild(QCPItemPosition* pos); // called from pos when this anchor is set as parent - void removeChild(QCPItemPosition *pos); // called from pos when its parent anchor is reset or pos deleted - -private: - Q_DISABLE_COPY(QCPItemAnchor) - - friend class QCPItemPosition; -}; - -class QCP_LIB_DECL QCPItemPosition : public QCPItemAnchor -{ -public: - /*! - Defines the ways an item position can be specified. Thus it defines what the numbers passed to - \ref setCoords actually mean. - - \see setType - */ - enum PositionType { ptAbsolute ///< Static positioning in pixels, starting from the top left corner of the viewport/widget. - ,ptViewportRatio ///< Static positioning given by a ratio of the current viewport (coordinates 0 to 1). - ,ptAxisRectRatio ///< Static positioning given by a ratio of the current axis rect (coordinates 0 to 1). - ,ptPlotCoords ///< Dynamic positioning at a plot coordinate defined by two axes (see \ref setAxes). - }; - - QCPItemPosition(QCustomPlot *parentPlot, QCPAbstractItem *parentItem, const QString name); - virtual ~QCPItemPosition(); - - // getters: - PositionType type() const { return mPositionType; } - QCPItemAnchor *parentAnchor() const { return mParentAnchor; } - double key() const { return mKey; } - double value() const { return mValue; } - QPointF coords() const { return QPointF(mKey, mValue); } - QCPAxis *keyAxis() const { return mKeyAxis; } - QCPAxis *valueAxis() const { return mValueAxis; } - virtual QPointF pixelPoint() const; - - // setters: - void setType(PositionType type); - bool setParentAnchor(QCPItemAnchor *parentAnchor, bool keepPixelPosition=false); - void setCoords(double key, double value); - void setCoords(const QPointF &coords); - void setAxes(QCPAxis* keyAxis, QCPAxis* valueAxis); - void setPixelPoint(const QPointF &pixelPoint); - -protected: - PositionType mPositionType; - QCPAxis *mKeyAxis, *mValueAxis; - double mKey, mValue; - QCPItemAnchor *mParentAnchor; - -private: - Q_DISABLE_COPY(QCPItemPosition) - -}; - -class QCP_LIB_DECL QCPAbstractItem : public QCPLayerable -{ - Q_OBJECT -public: - QCPAbstractItem(QCustomPlot *parentPlot); - virtual ~QCPAbstractItem(); - - // getters: - bool clipToAxisRect() const { return mClipToAxisRect; } - QCPAxis *clipKeyAxis() const { return mClipKeyAxis; } - QCPAxis *clipValueAxis() const { return mClipValueAxis; } - bool selectable() const { return mSelectable; } - bool selected() const { return mSelected; } - - // setters: - void setClipToAxisRect(bool clip); - void setClipAxes(QCPAxis *keyAxis, QCPAxis *valueAxis); - void setClipKeyAxis(QCPAxis *axis); - void setClipValueAxis(QCPAxis *axis); - void setSelectable(bool selectable); - void setSelected(bool selected); - - // non-property methods: - virtual double selectTest(const QPointF &pos) const = 0; - QList positions() const { return mPositions; } - QList anchors() const { return mAnchors; } - QCPItemPosition *position(const QString &name) const; - QCPItemAnchor *anchor(const QString &name) const; - bool hasAnchor(const QString &name) const; - -protected: - bool mClipToAxisRect; - QCPAxis *mClipKeyAxis, *mClipValueAxis; - bool mSelectable, mSelected; - QList mPositions; - QList mAnchors; - - virtual QRect clipRect() const; - virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; - virtual void draw(QCPPainter *painter) = 0; - - // helper functions for subclasses: - double distSqrToLine(const QPointF &start, const QPointF &end, const QPointF &point) const; - double rectSelectTest(const QRectF &rect, const QPointF &pos, bool filledRect) const; - - // anchor/position interface: - virtual QPointF anchorPixelPoint(int anchorId) const; - QCPItemPosition *createPosition(const QString &name); - QCPItemAnchor *createAnchor(const QString &name, int anchorId); - -signals: - void selectionChanged(bool selected); - -private: - Q_DISABLE_COPY(QCPAbstractItem) - - friend class QCustomPlot; - friend class QCPItemAnchor; -}; - -class QCP_LIB_DECL QCPItemStraightLine : public QCPAbstractItem -{ - Q_OBJECT -public: - QCPItemStraightLine(QCustomPlot *parentPlot); - virtual ~QCPItemStraightLine(); - - // getters: - QPen pen() const { return mPen; } - QPen selectedPen() const { return mSelectedPen; } - - // setters; - void setPen(const QPen &pen); - void setSelectedPen(const QPen &pen); - - // non-property methods: - virtual double selectTest(const QPointF &pos) const; - - QCPItemPosition * const point1; - QCPItemPosition * const point2; - -protected: - QPen mPen, mSelectedPen; - - virtual void draw(QCPPainter *painter); - - // helper functions: - double distToStraightLine(const QVector2D &point1, const QVector2D &vec, const QVector2D &point) const; - QLineF getRectClippedStraightLine(const QVector2D &point1, const QVector2D &vec, const QRect &rect) const; - QPen mainPen() const; -}; - -class QCP_LIB_DECL QCPItemLine : public QCPAbstractItem -{ - Q_OBJECT -public: - QCPItemLine(QCustomPlot *parentPlot); - virtual ~QCPItemLine(); - - // getters: - QPen pen() const { return mPen; } - QPen selectedPen() const { return mSelectedPen; } - QCPLineEnding head() const { return mHead; } - QCPLineEnding tail() const { return mTail; } - - // setters; - void setPen(const QPen &pen); - void setSelectedPen(const QPen &pen); - void setHead(const QCPLineEnding &head); - void setTail(const QCPLineEnding &tail); - - // non-property methods: - virtual double selectTest(const QPointF &pos) const; - - QCPItemPosition * const start; - QCPItemPosition * const end; - -protected: - QPen mPen, mSelectedPen; - QCPLineEnding mHead, mTail; - - virtual void draw(QCPPainter *painter); - - // helper functions: - QLineF getRectClippedLine(const QVector2D &start, const QVector2D &end, const QRect &rect) const; - QPen mainPen() const; -}; - -class QCP_LIB_DECL QCPItemEllipse : public QCPAbstractItem -{ - Q_OBJECT -public: - QCPItemEllipse(QCustomPlot *parentPlot); - virtual ~QCPItemEllipse(); - - // getters: - QPen pen() const { return mPen; } - QPen selectedPen() const { return mSelectedPen; } - QBrush brush() const { return mBrush; } - QBrush selectedBrush() const { return mSelectedBrush; } - - // setters; - void setPen(const QPen &pen); - void setSelectedPen(const QPen &pen); - void setBrush(const QBrush &brush); - void setSelectedBrush(const QBrush &brush); - - // non-property methods: - virtual double selectTest(const QPointF &pos) const; - - QCPItemPosition * const topLeft; - QCPItemPosition * const bottomRight; - QCPItemAnchor * const topLeftRim; - QCPItemAnchor * const top; - QCPItemAnchor * const topRightRim; - QCPItemAnchor * const right; - QCPItemAnchor * const bottomRightRim; - QCPItemAnchor * const bottom; - QCPItemAnchor * const bottomLeftRim; - QCPItemAnchor * const left; - -protected: - enum AnchorIndex {aiTopLeftRim, aiTop, aiTopRightRim, aiRight, aiBottomRightRim, aiBottom, aiBottomLeftRim, aiLeft}; - QPen mPen, mSelectedPen; - QBrush mBrush, mSelectedBrush; - - virtual void draw(QCPPainter *painter); - virtual QPointF anchorPixelPoint(int anchorId) const; - - // helper functions: - QPen mainPen() const; - QBrush mainBrush() const; -}; - -class QCP_LIB_DECL QCPItemRect : public QCPAbstractItem -{ - Q_OBJECT -public: - QCPItemRect(QCustomPlot *parentPlot); - virtual ~QCPItemRect(); - - // getters: - QPen pen() const { return mPen; } - QPen selectedPen() const { return mSelectedPen; } - QBrush brush() const { return mBrush; } - QBrush selectedBrush() const { return mSelectedBrush; } - - // setters; - void setPen(const QPen &pen); - void setSelectedPen(const QPen &pen); - void setBrush(const QBrush &brush); - void setSelectedBrush(const QBrush &brush); - - // non-property methods: - virtual double selectTest(const QPointF &pos) const; - - QCPItemPosition * const topLeft; - QCPItemPosition * const bottomRight; - QCPItemAnchor * const top; - QCPItemAnchor * const topRight; - QCPItemAnchor * const right; - QCPItemAnchor * const bottom; - QCPItemAnchor * const bottomLeft; - QCPItemAnchor * const left; - -protected: - enum AnchorIndex {aiTop, aiTopRight, aiRight, aiBottom, aiBottomLeft, aiLeft}; - QPen mPen, mSelectedPen; - QBrush mBrush, mSelectedBrush; - - virtual void draw(QCPPainter *painter); - virtual QPointF anchorPixelPoint(int anchorId) const; - - // helper functions: - QPen mainPen() const; - QBrush mainBrush() const; -}; - -class QCP_LIB_DECL QCPItemPixmap : public QCPAbstractItem -{ - Q_OBJECT -public: - QCPItemPixmap(QCustomPlot *parentPlot); - virtual ~QCPItemPixmap(); - - // getters: - QPixmap pixmap() const { return mPixmap; } - bool scaled() const { return mScaled; } - Qt::AspectRatioMode aspectRatioMode() const { return mAspectRatioMode; } - QPen pen() const { return mPen; } - QPen selectedPen() const { return mSelectedPen; } - - // setters; - void setPixmap(const QPixmap &pixmap); - void setScaled(bool scaled, Qt::AspectRatioMode aspectRatioMode=Qt::KeepAspectRatio); - void setPen(const QPen &pen); - void setSelectedPen(const QPen &pen); - - // non-property methods: - virtual double selectTest(const QPointF &pos) const; - - QCPItemPosition * const topLeft; - QCPItemPosition * const bottomRight; - QCPItemAnchor * const top; - QCPItemAnchor * const topRight; - QCPItemAnchor * const right; - QCPItemAnchor * const bottom; - QCPItemAnchor * const bottomLeft; - QCPItemAnchor * const left; - -protected: - enum AnchorIndex {aiTop, aiTopRight, aiRight, aiBottom, aiBottomLeft, aiLeft}; - QPixmap mPixmap; - QPixmap mScaledPixmap; - bool mScaled; - Qt::AspectRatioMode mAspectRatioMode; - QPen mPen, mSelectedPen; - - virtual void draw(QCPPainter *painter); - virtual QPointF anchorPixelPoint(int anchorId) const; - - // helper functions: - void updateScaledPixmap(QRect finalRect=QRect(), bool flipHorz=false, bool flipVert=false); - QRect getFinalRect(bool *flippedHorz=0, bool *flippedVert=0) const; - QPen mainPen() const; -}; - -class QCP_LIB_DECL QCPItemText : public QCPAbstractItem -{ - Q_OBJECT -public: - QCPItemText(QCustomPlot *parentPlot); - virtual ~QCPItemText(); - - // getters: - QColor color() const { return mColor; } - QColor selectedColor() const { return mSelectedColor; } - QPen pen() const { return mPen; } - QPen selectedPen() const { return mSelectedPen; } - QBrush brush() const { return mBrush; } - QBrush selectedBrush() const { return mSelectedBrush; } - QFont font() const { return mFont; } - QFont selectedFont() const { return mSelectedFont; } - QString text() const { return mText; } - Qt::Alignment positionAlignment() const { return mPositionAlignment; } - Qt::Alignment textAlignment() const { return mTextAlignment; } - double rotation() const { return mRotation; } - QMargins padding() const { return mPadding; } - - // setters; - void setColor(const QColor &color); - void setSelectedColor(const QColor &color); - void setPen(const QPen &pen); - void setSelectedPen(const QPen &pen); - void setBrush(const QBrush &brush); - void setSelectedBrush(const QBrush &brush); - void setFont(const QFont &font); - void setSelectedFont(const QFont &font); - void setText(const QString &text); - void setPositionAlignment(Qt::Alignment alignment); - void setTextAlignment(Qt::Alignment alignment); - void setRotation(double degrees); - void setPadding(const QMargins &padding); - - // non-property methods: - virtual double selectTest(const QPointF &pos) const; - - QCPItemPosition * const position; - QCPItemAnchor * const topLeft; - QCPItemAnchor * const top; - QCPItemAnchor * const topRight; - QCPItemAnchor * const right; - QCPItemAnchor * const bottomRight; - QCPItemAnchor * const bottom; - QCPItemAnchor * const bottomLeft; - QCPItemAnchor * const left; - -protected: - enum AnchorIndex {aiTopLeft, aiTop, aiTopRight, aiRight, aiBottomRight, aiBottom, aiBottomLeft, aiLeft}; - QColor mColor, mSelectedColor; - QPen mPen, mSelectedPen; - QBrush mBrush, mSelectedBrush; - QFont mFont, mSelectedFont; - QString mText; - Qt::Alignment mPositionAlignment; - Qt::Alignment mTextAlignment; - double mRotation; - QMargins mPadding; - - virtual void draw(QCPPainter *painter); - virtual QPointF anchorPixelPoint(int anchorId) const; - - // helper functions: - QPointF getTextDrawPoint(const QPointF &pos, const QRectF &rect, Qt::Alignment positionAlignment) const; - QFont mainFont() const; - QColor mainColor() const; - QPen mainPen() const; - QBrush mainBrush() const; -}; - -class QCP_LIB_DECL QCPItemCurve : public QCPAbstractItem -{ - Q_OBJECT -public: - QCPItemCurve(QCustomPlot *parentPlot); - virtual ~QCPItemCurve(); - - // getters: - QPen pen() const { return mPen; } - QPen selectedPen() const { return mSelectedPen; } - QCPLineEnding head() const { return mHead; } - QCPLineEnding tail() const { return mTail; } - - // setters; - void setPen(const QPen &pen); - void setSelectedPen(const QPen &pen); - void setHead(const QCPLineEnding &head); - void setTail(const QCPLineEnding &tail); - - // non-property methods: - virtual double selectTest(const QPointF &pos) const; - - QCPItemPosition * const start; - QCPItemPosition * const startDir; - QCPItemPosition * const endDir; - QCPItemPosition * const end; - -protected: - QPen mPen, mSelectedPen; - QCPLineEnding mHead, mTail; - - virtual void draw(QCPPainter *painter); - - // helper functions: - QPen mainPen() const; -}; - -class QCP_LIB_DECL QCPItemBracket : public QCPAbstractItem -{ - Q_OBJECT -public: - enum BracketStyle { bsSquare ///< A brace with angled edges - ,bsRound ///< A brace with round edges - ,bsCurly ///< A curly brace - ,bsCalligraphic ///< A curly brace with varying stroke width giving a calligraphic impression - }; - - QCPItemBracket(QCustomPlot *parentPlot); - virtual ~QCPItemBracket(); - - // getters: - QPen pen() const { return mPen; } - QPen selectedPen() const { return mSelectedPen; } - double length() const { return mLength; } - BracketStyle style() const { return mStyle; } - - // setters; - void setPen(const QPen &pen); - void setSelectedPen(const QPen &pen); - void setLength(double length); - void setStyle(BracketStyle style); - - // non-property methods: - virtual double selectTest(const QPointF &pos) const; - - QCPItemPosition * const left; - QCPItemPosition * const right; - QCPItemAnchor * const center; - -protected: - enum AnchorIndex {aiCenter}; - QPen mPen, mSelectedPen; - double mLength; - BracketStyle mStyle; - - virtual void draw(QCPPainter *painter); - virtual QPointF anchorPixelPoint(int anchorId) const; - - // helper functions: - QPen mainPen() const; -}; - -class QCP_LIB_DECL QCPItemTracer : public QCPAbstractItem -{ - Q_OBJECT -public: - /*! - The different visual appearances a tracer item can have. Some styles size may be controlled with \ref setSize. - - \see setStyle - */ - enum TracerStyle { tsNone ///< The tracer is not visible - ,tsPlus ///< A plus shaped crosshair with limited size - ,tsCrosshair ///< A plus shaped crosshair which spans the complete axis rect - ,tsCircle ///< A circle - ,tsSquare ///< A square - }; - Q_ENUMS(TracerStyle) - - QCPItemTracer(QCustomPlot *parentPlot); - virtual ~QCPItemTracer(); - - // getters: - QPen pen() const { return mPen; } - QPen selectedPen() const { return mSelectedPen; } - QBrush brush() const { return mBrush; } - QBrush selectedBrush() const { return mSelectedBrush; } - double size() const { return mSize; } - TracerStyle style() const { return mStyle; } - QCPGraph *graph() const { return mGraph; } - double graphKey() const { return mGraphKey; } - bool interpolating() const { return mInterpolating; } - - // setters; - void setPen(const QPen &pen); - void setSelectedPen(const QPen &pen); - void setBrush(const QBrush &brush); - void setSelectedBrush(const QBrush &brush); - void setSize(double size); - void setStyle(TracerStyle style); - void setGraph(QCPGraph *graph); - void setGraphKey(double key); - void setInterpolating(bool enabled); - - // non-property methods: - virtual double selectTest(const QPointF &pos) const; - void updatePosition(); - - QCPItemPosition * const position; - -protected: - QPen mPen, mSelectedPen; - QBrush mBrush, mSelectedBrush; - double mSize; - TracerStyle mStyle; - QCPGraph *mGraph; - double mGraphKey; - bool mInterpolating; - - virtual void draw(QCPPainter *painter); - - // helper functions: - QPen mainPen() const; - QBrush mainBrush() const; -}; - -class QCP_LIB_DECL QCPRange -{ -public: - double lower, upper; - QCPRange(); - QCPRange(double lower, double upper); - double size() const; - double center() const; - void normalize(); - QCPRange sanitizedForLogScale() const; - QCPRange sanitizedForLinScale() const; - bool contains(double value) const; - - static bool validRange(double lower, double upper); - static bool validRange(const QCPRange &range); - static const double minRange; //1e-280; - static const double maxRange; //1e280; -}; -Q_DECLARE_TYPEINFO(QCPRange, Q_MOVABLE_TYPE); - -class QCP_LIB_DECL QCPAbstractLegendItem : public QObject -{ - Q_OBJECT -public: - QCPAbstractLegendItem(QCPLegend *parent); - virtual ~QCPAbstractLegendItem() {} - - // getters: - bool antialiased() const { return mAntialiased; } - QFont font() const { return mFont; } - QColor textColor() const { return mTextColor; } - QFont selectedFont() const { return mSelectedFont; } - QColor selectedTextColor() const { return mSelectedTextColor; } - bool selectable() const { return mSelectable; } - bool selected() const { return mSelected; } - - // setters: - void setAntialiased(bool enabled); - void setFont(const QFont &font); - void setTextColor(const QColor &color); - void setSelectedFont(const QFont &font); - void setSelectedTextColor(const QColor &color); - void setSelectable(bool selectable); - void setSelected(bool selected); - -signals: - void selectionChanged(bool selected); - -protected: - QCPLegend *mParentLegend; - bool mAntialiased; - QFont mFont; - QColor mTextColor; - QFont mSelectedFont; - QColor mSelectedTextColor; - bool mSelectable, mSelected; - - virtual void draw(QCPPainter *painter, const QRect &rect) const = 0; - virtual QSize size(const QSize &targetSize) const = 0; - void applyAntialiasingHint(QCPPainter *painter) const; - -private: - Q_DISABLE_COPY(QCPAbstractLegendItem) - - friend class QCPLegend; -}; - -class QCP_LIB_DECL QCPPlottableLegendItem : public QCPAbstractLegendItem -{ - Q_OBJECT -public: - QCPPlottableLegendItem(QCPLegend *parent, QCPAbstractPlottable *plottable); - virtual ~QCPPlottableLegendItem() {} - - // getters: - QCPAbstractPlottable *plottable() { return mPlottable; } - bool textWrap() const { return mTextWrap; } - - // setters: - void setTextWrap(bool wrap); - -protected: - QCPAbstractPlottable *mPlottable; - bool mTextWrap; - - QPen getIconBorderPen() const; - QColor getTextColor() const; - QFont getFont() const; - - virtual void draw(QCPPainter *painter, const QRect &rect) const; - virtual QSize size(const QSize &targetSize) const; -}; - -class QCP_LIB_DECL QCPLegend : public QCPLayerable -{ - Q_OBJECT -public: - /*! - Defines where the legend is positioned inside the QCustomPlot axis rect. - */ - enum PositionStyle { psManual ///< Position is not changed automatically. Set manually via \ref setPosition - ,psTopLeft ///< Legend is positioned in the top left corner of the axis rect with distance to the border corresponding to the currently set top and left margins - ,psTop ///< Legend is horizontally centered at the top of the axis rect with distance to the border corresponding to the currently set top margin - ,psTopRight ///< Legend is positioned in the top right corner of the axis rect with distance to the border corresponding to the currently set top and right margins - ,psRight ///< Legend is vertically centered at the right of the axis rect with distance to the border corresponding to the currently set right margin - ,psBottomRight ///< Legend is positioned in the bottom right corner of the axis rect with distance to the border corresponding to the currently set bottom and right margins - ,psBottom ///< Legend is horizontally centered at the bottom of the axis rect with distance to the border corresponding to the currently set bottom margin - ,psBottomLeft ///< Legend is positioned in the bottom left corner of the axis rect with distance to the border corresponding to the currently set bottom and left margins - ,psLeft ///< Legend is vertically centered at the left of the axis rect with distance to the border corresponding to the currently set left margin - }; - Q_ENUMS(PositionStyle) - - /*! - Defines the selectable parts of a legend - */ - enum SelectablePart { spNone = 0 ///< None - ,spLegendBox = 0x001 ///< The legend box (frame) - ,spItems = 0x002 ///< Legend items individually (see \ref selectedItems) - }; - Q_ENUMS(SelectablePart) - Q_DECLARE_FLAGS(SelectableParts, SelectablePart) - - explicit QCPLegend(QCustomPlot *parentPlot); - virtual ~QCPLegend(); - - // getters: - QPen borderPen() const { return mBorderPen; } - QBrush brush() const { return mBrush; } - QFont font() const { return mFont; } - QColor textColor() const { return mTextColor; } - PositionStyle positionStyle() const { return mPositionStyle; } - QPoint position() const { return mPosition; } - bool autoSize() const { return mAutoSize; } - QSize size() const { return mSize; } - QSize minimumSize() const { return mMinimumSize; } - int paddingLeft() const { return mPaddingLeft; } - int paddingRight() const { return mPaddingRight; } - int paddingTop() const { return mPaddingTop; } - int paddingBottom() const { return mPaddingBottom; } - int marginLeft() const { return mMarginLeft; } - int marginRight() const { return mMarginRight; } - int marginTop() const { return mMarginTop; } - int marginBottom() const { return mMarginBottom; } - int itemSpacing() const { return mItemSpacing; } - QSize iconSize() const { return mIconSize; } - int iconTextPadding() const { return mIconTextPadding; } - QPen iconBorderPen() const { return mIconBorderPen; } - SelectableParts selectable() const { return mSelectable; } - SelectableParts selected() const { return mSelected; } - QPen selectedBorderPen() const { return mSelectedBorderPen; } - QPen selectedIconBorderPen() const { return mSelectedIconBorderPen; } - QBrush selectedBrush() const { return mSelectedBrush; } - QFont selectedFont() const { return mSelectedFont; } - QColor selectedTextColor() const { return mSelectedTextColor; } - - // setters: - void setBorderPen(const QPen &pen); - void setBrush(const QBrush &brush); - void setFont(const QFont &font); - void setTextColor(const QColor &color); - void setPositionStyle(PositionStyle legendPositionStyle); - void setPosition(const QPoint &pixelPosition); - void setAutoSize(bool on); - void setSize(const QSize &size); - void setSize(int width, int height); - void setMinimumSize(const QSize &size); - void setMinimumSize(int width, int height); - void setPaddingLeft(int padding); - void setPaddingRight(int padding); - void setPaddingTop(int padding); - void setPaddingBottom(int padding); - void setPadding(int left, int right, int top, int bottom); - void setMarginLeft(int margin); - void setMarginRight(int margin); - void setMarginTop(int margin); - void setMarginBottom(int margin); - void setMargin(int left, int right, int top, int bottom); - void setItemSpacing(int spacing); - void setIconSize(const QSize &size); - void setIconSize(int width, int height); - void setIconTextPadding(int padding); - void setIconBorderPen(const QPen &pen); - void setSelectable(const SelectableParts &selectable); - void setSelected(const SelectableParts &selected); - void setSelectedBorderPen(const QPen &pen); - void setSelectedIconBorderPen(const QPen &pen); - void setSelectedBrush(const QBrush &brush); - void setSelectedFont(const QFont &font); - void setSelectedTextColor(const QColor &color); - - // non-property methods: - QCPAbstractLegendItem *item(int index) const; - QCPPlottableLegendItem *itemWithPlottable(const QCPAbstractPlottable *plottable) const; - int itemCount() const; - bool hasItem(QCPAbstractLegendItem *item) const; - bool hasItemWithPlottable(const QCPAbstractPlottable *plottable) const; - bool addItem(QCPAbstractLegendItem *item); - bool removeItem(int index); - bool removeItem(QCPAbstractLegendItem *item); - void clearItems(); - QList selectedItems() const; - void reArrange(); - - bool selectTestLegend(const QPointF &pos) const; - QCPAbstractLegendItem *selectTestItem(const QPoint pos) const; - -signals: - void selectionChanged(QCPLegend::SelectableParts selection); - -protected: - // simple properties with getters and setters: - QPen mBorderPen, mIconBorderPen; - QBrush mBrush; - QFont mFont; - QColor mTextColor; - QPoint mPosition; - QSize mSize, mMinimumSize, mIconSize; - PositionStyle mPositionStyle; - bool mAutoSize; - int mPaddingLeft, mPaddingRight, mPaddingTop, mPaddingBottom; - int mMarginLeft, mMarginRight, mMarginTop, mMarginBottom; - int mItemSpacing, mIconTextPadding; - SelectableParts mSelected, mSelectable; - QPen mSelectedBorderPen, mSelectedIconBorderPen; - QBrush mSelectedBrush; - QFont mSelectedFont; - QColor mSelectedTextColor; - - // internal or not explicitly exposed properties: - QList mItems; - QMap mItemBoundingBoxes; - - virtual void updateSelectionState(); - virtual bool handleLegendSelection(QMouseEvent *event, bool additiveSelection, bool &modified); - // introduced methods: - virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; - virtual void draw(QCPPainter *painter); - virtual void calculateAutoSize(); - virtual void calculateAutoPosition(); - - // drawing helpers: - QPen getBorderPen() const; - QBrush getBrush() const; - -private: - Q_DISABLE_COPY(QCPLegend) - - friend class QCustomPlot; - friend class QCPAbstractLegendItem; -}; -Q_DECLARE_OPERATORS_FOR_FLAGS(QCPLegend::SelectableParts) - -class QCP_LIB_DECL QCPGrid : public QCPLayerable -{ - Q_OBJECT -public: - QCPGrid(QCPAxis *parentAxis); - ~QCPGrid(); - - // getters: - bool subGridVisible() const { return mSubGridVisible; } - bool antialiasedSubGrid() const { return mAntialiasedSubGrid; } - bool antialiasedZeroLine() const { return mAntialiasedZeroLine; } - QPen pen() const { return mPen; } - QPen subGridPen() const { return mSubGridPen; } - QPen zeroLinePen() const { return mZeroLinePen; } - - // setters: - void setSubGridVisible(bool visible); - void setAntialiasedSubGrid(bool enabled); - void setAntialiasedZeroLine(bool enabled); - void setPen(const QPen &pen); - void setSubGridPen(const QPen &pen); - void setZeroLinePen(const QPen &pen); - -protected: - QCPAxis *mParentAxis; - bool mSubGridVisible; - bool mAntialiasedSubGrid, mAntialiasedZeroLine; - QPen mPen, mSubGridPen, mZeroLinePen; - - virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; - virtual void draw(QCPPainter *painter); - // drawing helpers: - void drawGridLines(QCPPainter *painter) const; - void drawSubGridLines(QCPPainter *painter) const; - - friend class QCPAxis; -}; - -class QCP_LIB_DECL QCPAxis : public QCPLayerable -{ - Q_OBJECT - /// \cond INCLUDE_QPROPERTIES - Q_PROPERTY(AxisType axisType READ axisType WRITE setAxisType) - Q_PROPERTY(ScaleType scaleType READ scaleType WRITE setScaleType) - Q_PROPERTY(double scaleLogBase READ scaleLogBase WRITE setScaleLogBase) - Q_PROPERTY(QRect axisRect READ axisRect WRITE setAxisRect) - Q_PROPERTY(QCPRange range READ range WRITE setRange) - Q_PROPERTY(bool grid READ grid WRITE setGrid) - Q_PROPERTY(bool subGrid READ subGrid WRITE setSubGrid) - Q_PROPERTY(bool autoTicks READ autoTicks WRITE setAutoTicks) - Q_PROPERTY(int autoTickCount READ autoTickCount WRITE setAutoTickCount) - Q_PROPERTY(bool autoTickLabels READ autoTickLabels WRITE setAutoTickLabels) - Q_PROPERTY(bool autoTickStep READ autoTickStep WRITE setAutoTickStep) - Q_PROPERTY(bool autoSubTicks READ autoSubTicks WRITE setAutoSubTicks) - Q_PROPERTY(bool ticks READ ticks WRITE setTicks) - Q_PROPERTY(bool tickLabels READ tickLabels WRITE setTickLabels) - Q_PROPERTY(int tickLabelPadding READ tickLabelPadding WRITE setTickLabelPadding) - Q_PROPERTY(LabelType tickLabelType READ tickLabelType WRITE setTickLabelType) - Q_PROPERTY(QFont tickLabelFont READ tickLabelFont WRITE setTickLabelFont) - Q_PROPERTY(double tickLabelRotation READ tickLabelRotation WRITE setTickLabelRotation) - Q_PROPERTY(QString dateTimeFormat READ dateTimeFormat WRITE setDateTimeFormat) - Q_PROPERTY(QString numberFormat READ numberFormat WRITE setNumberFormat) - Q_PROPERTY(double tickStep READ tickStep WRITE setTickStep) - Q_PROPERTY(QVector tickVector READ tickVector WRITE setTickVector) - Q_PROPERTY(QVector tickVectorLabels READ tickVectorLabels WRITE setTickVectorLabels) - Q_PROPERTY(int subTickCount READ subTickCount WRITE setSubTickCount) - Q_PROPERTY(QPen basePen READ basePen WRITE setBasePen) - Q_PROPERTY(QPen gridPen READ gridPen WRITE setGridPen) - Q_PROPERTY(QPen subGridPen READ subGridPen WRITE setSubGridPen) - Q_PROPERTY(QPen tickPen READ tickPen WRITE setTickPen) - Q_PROPERTY(QPen subTickPen READ subTickPen WRITE setSubTickPen) - Q_PROPERTY(QFont labelFont READ labelFont WRITE setLabelFont) - Q_PROPERTY(QString label READ label WRITE setLabel) - Q_PROPERTY(int labelPadding READ labelPadding WRITE setLabelPadding) - /// \endcond -public: - /*! - Defines at which side of the axis rect the axis will appear. This also affects how the tick - marks are drawn, on which side the labels are placed etc. - \see setAxisType - */ - enum AxisType { atLeft ///< Axis is vertical and on the left side of the axis rect of the parent QCustomPlot - ,atRight ///< Axis is vertical and on the right side of the axis rect of the parent QCustomPlot - ,atTop ///< Axis is horizontal and on the top side of the axis rect of the parent QCustomPlot - ,atBottom ///< Axis is horizontal and on the bottom side of the axis rect of the parent QCustomPlot - }; - Q_ENUMS(AxisType) - /*! - When automatic tick label generation is enabled (\ref setAutoTickLabels), defines how the - numerical value (coordinate) of the tick position is translated into a string that will be - drawn at the tick position. - \see setTickLabelType - */ - enum LabelType { ltNumber ///< Tick coordinate is regarded as normal number and will be displayed as such. (see \ref setNumberFormat) - ,ltDateTime ///< Tick coordinate is regarded as a date/time (seconds since 1970-01-01T00:00:00 UTC, see QDateTime::toTime_t) and will be displayed and formatted as such. (see \ref setDateTimeFormat) - }; - Q_ENUMS(LabelType) - /*! - Defines the scale of an axis. - \see setScaleType - */ - enum ScaleType { stLinear ///< Normal linear scaling - ,stLogarithmic ///< Logarithmic scaling with correspondingly transformed plots and (major) tick marks at every base power (see \ref setScaleLogBase). - }; - Q_ENUMS(ScaleType) - /*! - Defines the selectable parts of an axis. - \see setSelectable, setSelected - */ - enum SelectablePart { spNone = 0 ///< None of the selectable parts - ,spAxis = 0x001 ///< The axis backbone and tick marks - ,spTickLabels = 0x002 ///< Tick labels (numbers) of this axis (as a whole, not individually) - ,spAxisLabel = 0x004 ///< The axis label - }; - Q_ENUMS(SelectablePart) - Q_DECLARE_FLAGS(SelectableParts, SelectablePart) - - explicit QCPAxis(QCustomPlot *parentPlot, AxisType type); - virtual ~QCPAxis(); - - // getters: - AxisType axisType() const { return mAxisType; } - QRect axisRect() const { return mAxisRect; } - ScaleType scaleType() const { return mScaleType; } - double scaleLogBase() const { return mScaleLogBase; } - const QCPRange range() const { return mRange; } - bool rangeReversed() const { return mRangeReversed; } - bool antialiasedGrid() const { return mGrid->antialiased(); } - bool antialiasedSubGrid() const { return mGrid->antialiasedSubGrid(); } - bool antialiasedZeroLine() const { return mGrid->antialiasedZeroLine(); } - bool grid() const { return mGrid->visible(); } - bool subGrid() const { return mGrid->subGridVisible(); } - bool autoTicks() const { return mAutoTicks; } - int autoTickCount() const { return mAutoTickCount; } - bool autoTickLabels() const { return mAutoTickLabels; } - bool autoTickStep() const { return mAutoTickStep; } - bool autoSubTicks() const { return mAutoSubTicks; } - bool ticks() const { return mTicks; } - bool tickLabels() const { return mTickLabels; } - int tickLabelPadding() const { return mTickLabelPadding; } - LabelType tickLabelType() const { return mTickLabelType; } - QFont tickLabelFont() const { return mTickLabelFont; } - QColor tickLabelColor() const { return mTickLabelColor; } - double tickLabelRotation() const { return mTickLabelRotation; } - QString dateTimeFormat() const { return mDateTimeFormat; } - QString numberFormat() const; - int numberPrecision() const { return mNumberPrecision; } - double tickStep() const { return mTickStep; } - QVector tickVector() const { return mTickVector; } - QVector tickVectorLabels() const { return mTickVectorLabels; } - int tickLengthIn() const { return mTickLengthIn; } - int tickLengthOut() const { return mTickLengthOut; } - int subTickCount() const { return mSubTickCount; } - int subTickLengthIn() const { return mSubTickLengthIn; } - int subTickLengthOut() const { return mSubTickLengthOut; } - QPen basePen() const { return mBasePen; } - QPen gridPen() const { return mGrid->pen(); } - QPen subGridPen() const { return mGrid->subGridPen(); } - QPen zeroLinePen() const { return mGrid->zeroLinePen(); } - QPen tickPen() const { return mTickPen; } - QPen subTickPen() const { return mSubTickPen; } - QFont labelFont() const { return mLabelFont; } - QColor labelColor() const { return mLabelColor; } - QString label() const { return mLabel; } - int labelPadding() const { return mLabelPadding; } - int padding() const { return mPadding; } - SelectableParts selected() const { return mSelected; } - SelectableParts selectable() const { return mSelectable; } - QFont selectedTickLabelFont() const { return mSelectedTickLabelFont; } - QFont selectedLabelFont() const { return mSelectedLabelFont; } - QColor selectedTickLabelColor() const { return mSelectedTickLabelColor; } - QColor selectedLabelColor() const { return mSelectedLabelColor; } - QPen selectedBasePen() const { return mSelectedBasePen; } - QPen selectedTickPen() const { return mSelectedTickPen; } - QPen selectedSubTickPen() const { return mSelectedSubTickPen; } - - // setters: - void setScaleType(ScaleType type); - void setScaleLogBase(double base); - void setRange(double lower, double upper); - void setRange(double position, double size, Qt::AlignmentFlag alignment); - void setRangeLower(double lower); - void setRangeUpper(double upper); - void setRangeReversed(bool reversed); - void setAntialiasedGrid(bool enabled); - void setAntialiasedSubGrid(bool enabled); - void setAntialiasedZeroLine(bool enabled); - void setGrid(bool show); - void setSubGrid(bool show); - void setAutoTicks(bool on); - void setAutoTickCount(int approximateCount); - void setAutoTickLabels(bool on); - void setAutoTickStep(bool on); - void setAutoSubTicks(bool on); - void setTicks(bool show); - void setTickLabels(bool show); - void setTickLabelPadding(int padding); - void setTickLabelType(LabelType type); - void setTickLabelFont(const QFont &font); - void setTickLabelColor(const QColor &color); - void setTickLabelRotation(double degrees); - void setDateTimeFormat(const QString &format); - void setNumberFormat(const QString &formatCode); - void setNumberPrecision(int precision); - void setTickStep(double step); - void setTickVector(const QVector &vec); - void setTickVectorLabels(const QVector &vec); - void setTickLength(int inside, int outside=0); - void setSubTickCount(int count); - void setSubTickLength(int inside, int outside=0); - void setBasePen(const QPen &pen); - void setGridPen(const QPen &pen); - void setSubGridPen(const QPen &pen); - void setZeroLinePen(const QPen &pen); - void setTickPen(const QPen &pen); - void setSubTickPen(const QPen &pen); - void setLabelFont(const QFont &font); - void setLabelColor(const QColor &color); - void setLabel(const QString &str); - void setLabelPadding(int padding); - void setPadding(int padding); - void setSelectedTickLabelFont(const QFont &font); - void setSelectedLabelFont(const QFont &font); - void setSelectedTickLabelColor(const QColor &color); - void setSelectedLabelColor(const QColor &color); - void setSelectedBasePen(const QPen &pen); - void setSelectedTickPen(const QPen &pen); - void setSelectedSubTickPen(const QPen &pen); - - // non-property methods: - Qt::Orientation orientation() const { return mOrientation; } - void moveRange(double diff); - void scaleRange(double factor, double center); - void setScaleRatio(const QCPAxis *otherAxis, double ratio=1.0); - double pixelToCoord(double value) const; - double coordToPixel(double value) const; - SelectablePart selectTest(const QPointF &pos) const; - -public slots: - // slot setters: - void setRange(const QCPRange &range); - void setSelectable(const QCPAxis::SelectableParts &selectable); - void setSelected(const QCPAxis::SelectableParts &selected); - -signals: - void ticksRequest(); - void rangeChanged(const QCPRange &newRange); - void selectionChanged(QCPAxis::SelectableParts selection); - -protected: - // simple properties with getters and setters: - QVector mTickVector; - QVector mTickVectorLabels; - QCPRange mRange; - QString mDateTimeFormat; - QString mLabel; - QRect mAxisRect; - QPen mBasePen, mTickPen, mSubTickPen; - QFont mTickLabelFont, mLabelFont; - QColor mTickLabelColor, mLabelColor; - LabelType mTickLabelType; - ScaleType mScaleType; - AxisType mAxisType; - double mTickStep; - double mScaleLogBase, mScaleLogBaseLogInv; - int mSubTickCount, mTickLengthIn, mTickLengthOut, mSubTickLengthIn, mSubTickLengthOut; - int mAutoTickCount; - int mTickLabelPadding, mLabelPadding, mPadding; - double mTickLabelRotation; - bool mTicks, mTickLabels, mAutoTicks, mAutoTickLabels, mAutoTickStep, mAutoSubTicks; - bool mRangeReversed; - SelectableParts mSelectable, mSelected; - QFont mSelectedTickLabelFont, mSelectedLabelFont; - QColor mSelectedTickLabelColor, mSelectedLabelColor; - QPen mSelectedBasePen, mSelectedTickPen, mSelectedSubTickPen; - QRect mAxisSelectionBox, mTickLabelsSelectionBox, mLabelSelectionBox; - - // internal or not explicitly exposed properties: - QCPGrid *mGrid; - QVector mSubTickVector; - QChar mExponentialChar, mPositiveSignChar; - int mNumberPrecision; - char mNumberFormatChar; - bool mNumberBeautifulPowers, mNumberMultiplyCross; - Qt::Orientation mOrientation; - int mLowestVisibleTick, mHighestVisibleTick; - - // internal setters: - void setAxisType(AxisType type); - void setAxisRect(const QRect &rect); - - // introduced methods: - virtual void setupTickVectors(); - virtual void generateAutoTicks(); - virtual int calculateAutoSubTickCount(double tickStep) const; - virtual int calculateMargin() const; - virtual bool handleAxisSelection(QMouseEvent *event, bool additiveSelection, bool &modified); - - // drawing: - virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; - virtual void draw(QCPPainter *painter); - virtual void drawTickLabel(QCPPainter *painter, double position, int distanceToAxis, const QString &text, QSize *tickLabelsSize); - virtual void getMaxTickLabelSize(const QFont &font, const QString &text, QSize *tickLabelsSize) const; - - // basic non virtual helpers: - void visibleTickBounds(int &lowIndex, int &highIndex) const; - double baseLog(double value) const; - double basePow(double value) const; - - // helpers to get the right pen/font depending on selection state: - QPen getBasePen() const; - QPen getTickPen() const; - QPen getSubTickPen() const; - QFont getTickLabelFont() const; - QFont getLabelFont() const; - QColor getTickLabelColor() const; - QColor getLabelColor() const; - -private: - Q_DISABLE_COPY(QCPAxis) - - friend class QCustomPlot; - friend class QCPGrid; -}; -Q_DECLARE_OPERATORS_FOR_FLAGS(QCPAxis::SelectableParts) - -class QCP_LIB_DECL QCustomPlot : public QWidget -{ - Q_OBJECT - /// \cond INCLUDE_QPROPERTIES - Q_PROPERTY(QString title READ title WRITE setTitle) - Q_PROPERTY(QRect axisRect READ axisRect WRITE setAxisRect) - Q_PROPERTY(int marginLeft READ marginLeft WRITE setMarginLeft) - Q_PROPERTY(int marginRight READ marginRight WRITE setMarginRight) - Q_PROPERTY(int marginTop READ marginTop WRITE setMarginTop) - Q_PROPERTY(int marginBottom READ marginBottom WRITE setMarginBottom) - Q_PROPERTY(int autoMargin READ autoMargin WRITE setAutoMargin) - Q_PROPERTY(QColor color READ color WRITE setColor) - Q_PROPERTY(Qt::Orientations rangeDrag READ rangeDrag WRITE setRangeDrag) - Q_PROPERTY(Qt::Orientations rangeZoom READ rangeZoom WRITE setRangeZoom) - /// \endcond -public: - /*! - Defines the mouse interactions possible with QCustomPlot - - \c Interactions is a flag of or-combined elements of this enum type. - \see setInteractions, setInteraction - */ - enum Interaction { iRangeDrag = 0x001 ///< 0x001 Axis ranges are draggable (see \ref setRangeDrag, \ref setRangeDragAxes) - ,iRangeZoom = 0x002 ///< 0x002 Axis ranges are zoomable with the mouse wheel (see \ref setRangeZoom, \ref setRangeZoomAxes) - ,iMultiSelect = 0x004 ///< 0x004 The user can select multiple objects by holding the modifier set by \ref setMultiSelectModifier while clicking - ,iSelectTitle = 0x008 ///< 0x008 The plot title is selectable - ,iSelectPlottables = 0x010 ///< 0x010 Plottables are selectable - ,iSelectAxes = 0x020 ///< 0x020 Axes are selectable (or parts of them, see QCPAxis::setSelectable) - ,iSelectLegend = 0x040 ///< 0x040 Legends are selectable (or their child items, see QCPLegend::setSelectable) - ,iSelectItems = 0x080 ///< 0x080 Items are selectable (Rectangles, Arrows, Textitems, etc. see \ref QCPAbstractItem) - }; - Q_ENUMS(Interaction) - Q_DECLARE_FLAGS(Interactions, Interaction) - /*! - Defines how a layer should be inserted relative to a specified other layer. - - \see addLayer, moveLayer - */ - enum LayerInsertMode { limBelow ///< Layer is inserted below other layer - ,limAbove ///< Layer is inserted above other layer - }; - Q_ENUMS(LayerInsertMode) - - explicit QCustomPlot(QWidget *parent = 0); - virtual ~QCustomPlot(); - - // getters: - QString title() const { return mTitle; } - QFont titleFont() const { return mTitleFont; } - QColor titleColor() const { return mTitleColor; } - QRect axisRect() const { return mAxisRect; } - QRect viewport() const { return mViewport; } - int marginLeft() const { return mMarginLeft; } - int marginRight() const { return mMarginRight; } - int marginTop() const { return mMarginTop; } - int marginBottom() const { return mMarginBottom; } - bool autoMargin() const { return mAutoMargin; } - QColor color() const { return mColor; } - Qt::Orientations rangeDrag() const { return mRangeDrag; } - Qt::Orientations rangeZoom() const { return mRangeZoom; } - QCPAxis *rangeDragAxis(Qt::Orientation orientation); - QCPAxis *rangeZoomAxis(Qt::Orientation orientation); - double rangeZoomFactor(Qt::Orientation orientation); - QCP::AntialiasedElements antialiasedElements() const { return mAntialiasedElements; } - QCP::AntialiasedElements notAntialiasedElements() const { return mNotAntialiasedElements; } - bool autoAddPlottableToLegend() const { return mAutoAddPlottableToLegend; } - QPixmap axisBackground() const { return mAxisBackground; } - bool axisBackgroundScaled() const { return mAxisBackgroundScaled; } - Qt::AspectRatioMode axisBackgroundScaledMode() const { return mAxisBackgroundScaledMode; } - const Interactions interactions() const { return mInteractions; } - int selectionTolerance() const { return mSelectionTolerance; } - QFont selectedTitleFont() const { return mSelectedTitleFont; } - QColor selectedTitleColor() const { return mSelectedTitleColor; } - bool titleSelected() const { return mTitleSelected; } - bool noAntialiasingOnDrag() const { return mNoAntialiasingOnDrag; } - QCP::PlottingHints plottingHints() const { return mPlottingHints; } - Qt::KeyboardModifier multiSelectModifier() const { return mMultiSelectModifier; } - - // setters: - void setTitle(const QString &title); - void setTitleFont(const QFont &font); - void setTitleColor(const QColor &color); - void setAxisRect(const QRect &arect); - void setMarginLeft(int margin); - void setMarginRight(int margin); - void setMarginTop(int margin); - void setMarginBottom(int margin); - void setMargin(int left, int right, int top, int bottom); - void setAutoMargin(bool enabled); - void setColor(const QColor &color); - void setRangeDrag(Qt::Orientations orientations); - void setRangeZoom(Qt::Orientations orientations); - void setRangeDragAxes(QCPAxis *horizontal, QCPAxis *vertical); - void setRangeZoomAxes(QCPAxis *horizontal, QCPAxis *vertical); - void setRangeZoomFactor(double horizontalFactor, double verticalFactor); - void setRangeZoomFactor(double factor); - void setAntialiasedElements(const QCP::AntialiasedElements &antialiasedElements); - void setAntialiasedElement(QCP::AntialiasedElement antialiasedElement, bool enabled=true); - void setNotAntialiasedElements(const QCP::AntialiasedElements ¬AntialiasedElements); - void setNotAntialiasedElement(QCP::AntialiasedElement notAntialiasedElement, bool enabled=true); - void setAutoAddPlottableToLegend(bool on); - void setAxisBackground(const QPixmap &pm); - void setAxisBackground(const QPixmap &pm, bool scaled, Qt::AspectRatioMode mode=Qt::KeepAspectRatioByExpanding); - void setAxisBackgroundScaled(bool scaled); - void setAxisBackgroundScaledMode(Qt::AspectRatioMode mode); - void setInteractions(const Interactions &interactions); - void setInteraction(const Interaction &interaction, bool enabled=true); - void setSelectionTolerance(int pixels); - void setSelectedTitleFont(const QFont &font); - void setSelectedTitleColor(const QColor &color); - void setTitleSelected(bool selected); - void setNoAntialiasingOnDrag(bool enabled); - void setPlottingHints(const QCP::PlottingHints &hints); - void setPlottingHint(QCP::PlottingHint hint, bool enabled=true); - void setMultiSelectModifier(Qt::KeyboardModifier modifier); - - // non-property methods: - // plottable interface: - QCPAbstractPlottable *plottable(int index); - QCPAbstractPlottable *plottable(); - bool addPlottable(QCPAbstractPlottable *plottable); - bool removePlottable(QCPAbstractPlottable *plottable); - bool removePlottable(int index); - int clearPlottables(); - int plottableCount() const; - QList selectedPlottables() const; - QCPAbstractPlottable *plottableAt(const QPointF &pos, bool onlySelectable=false) const; - bool hasPlottable(QCPAbstractPlottable *plottable) const; - - // specialized interface for QCPGraph: - QCPGraph *graph(int index) const; - QCPGraph *graph() const; - QCPGraph *addGraph(QCPAxis *keyAxis=0, QCPAxis *valueAxis=0); - bool removeGraph(QCPGraph *graph); - bool removeGraph(int index); - int clearGraphs(); - int graphCount() const; - QList selectedGraphs() const; - - // item interface: - QCPAbstractItem *item(int index) const; - QCPAbstractItem *item() const; - bool addItem(QCPAbstractItem* item); - bool removeItem(QCPAbstractItem *item); - bool removeItem(int index); - int clearItems(); - int itemCount() const; - QList selectedItems() const; - QCPAbstractItem *itemAt(const QPointF &pos, bool onlySelectable=false) const; - - // layer interface: - QCPLayer *layer(const QString &name) const; - QCPLayer *layer(int index) const; - QCPLayer *currentLayer() const; - bool setCurrentLayer(const QString &name); - bool setCurrentLayer(QCPLayer *layer); - int layerCount() const; - bool addLayer(const QString &name, QCPLayer *otherLayer=0, LayerInsertMode insertMode=limAbove); - bool removeLayer(QCPLayer *layer); - bool moveLayer(QCPLayer *layer, QCPLayer *otherLayer, LayerInsertMode insertMode=limAbove); - - QList selectedAxes() const; - QList selectedLegends() const; - void setupFullAxesBox(); - bool savePdf(const QString &fileName, bool noCosmeticPen=false, int width=0, int height=0); - bool savePng(const QString &fileName, int width=0, int height=0, double scale=1.0, int quality=-1); - bool saveJpg(const QString &fileName, int width=0, int height=0, double scale=1.0, int quality=-1); - bool saveBmp(const QString &fileName, int width=0, int height=0, double scale=1.0); - bool saveRastered(const QString &fileName, int width, int height, double scale, const char *format, int quality=-1); - - QCPAxis *xAxis, *yAxis, *xAxis2, *yAxis2; - QCPLegend *legend; - -public slots: - void deselectAll(); - void replot(); - void rescaleAxes(); - -signals: - void mouseDoubleClick(QMouseEvent *event); - void mousePress(QMouseEvent *event); - void mouseMove(QMouseEvent *event); - void mouseRelease(QMouseEvent *event); - void mouseWheel(QWheelEvent *event); - - void plottableClick(QCPAbstractPlottable *plottable, QMouseEvent *event); - void plottableDoubleClick(QCPAbstractPlottable *plottable, QMouseEvent *event); - void itemClick(QCPAbstractItem *item, QMouseEvent *event); - void itemDoubleClick(QCPAbstractItem *item, QMouseEvent *event); - void axisClick(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event); - void axisDoubleClick(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event); - void legendClick(QCPLegend *legend, QCPAbstractLegendItem *item, QMouseEvent *event); - void legendDoubleClick(QCPLegend *legend, QCPAbstractLegendItem *item, QMouseEvent *event); - void titleClick(QMouseEvent *event); - void titleDoubleClick(QMouseEvent *event); - - void selectionChangedByUser(); - void beforeReplot(); - void afterReplot(); - -protected: - QString mTitle; - QFont mTitleFont, mSelectedTitleFont; - QColor mTitleColor, mSelectedTitleColor; - QRect mViewport; - QRect mAxisRect; - int mMarginLeft, mMarginRight, mMarginTop, mMarginBottom; - bool mAutoMargin, mAutoAddPlottableToLegend; - QColor mColor; - QList mPlottables; - QList mGraphs; // extra list of items also in mPlottables that are of type QCPGraph - QList mItems; - QList mLayers; - Qt::Orientations mRangeDrag, mRangeZoom; - QCPAxis *mRangeDragHorzAxis, *mRangeDragVertAxis, *mRangeZoomHorzAxis, *mRangeZoomVertAxis; - double mRangeZoomFactorHorz, mRangeZoomFactorVert; - bool mDragging; - QCP::AntialiasedElements mAntialiasedElements, mNotAntialiasedElements; - QPixmap mAxisBackground; - bool mAxisBackgroundScaled; - Qt::AspectRatioMode mAxisBackgroundScaledMode; - Interactions mInteractions; - int mSelectionTolerance; - bool mTitleSelected; - QRect mTitleBoundingBox; - bool mNoAntialiasingOnDrag; - // not explicitly exposed properties: - QPixmap mPaintBuffer; - QPoint mDragStart; - QCPRange mDragStartHorzRange, mDragStartVertRange; - QPixmap mScaledAxisBackground; - bool mReplotting; - QCP::AntialiasedElements mAADragBackup, mNotAADragBackup; - QCPLayer *mCurrentLayer; - QCP::PlottingHints mPlottingHints; - Qt::KeyboardModifier mMultiSelectModifier; - - // reimplemented methods: - virtual QSize minimumSizeHint() const; - virtual void paintEvent(QPaintEvent *event); - virtual void resizeEvent(QResizeEvent *event); - virtual void mouseDoubleClickEvent(QMouseEvent *event); - virtual void mousePressEvent(QMouseEvent *event); - virtual void mouseMoveEvent(QMouseEvent *event); - virtual void mouseReleaseEvent(QMouseEvent *event); - virtual void wheelEvent(QWheelEvent *event); - // event helpers: - virtual bool handlePlottableSelection(QMouseEvent *event, bool additiveSelection, bool &modified); - virtual bool handleItemSelection(QMouseEvent *event, bool additiveSelection, bool &modified); - virtual bool handleAxisSelection(QMouseEvent *event, bool additiveSelection, bool &modified); - virtual bool handleTitleSelection(QMouseEvent *event, bool additiveSelection, bool &modified); - - // introduced methods: - virtual void draw(QCPPainter *painter); - virtual void drawAxisBackground(QCPPainter *painter); - - // helpers: - void updateAxisRect(); - bool selectTestTitle(const QPointF &pos) const; - friend class QCPLegend; - friend class QCPAxis; - friend class QCPLayer; -}; -Q_DECLARE_OPERATORS_FOR_FLAGS(QCustomPlot::Interactions) - -#endif // QCUSTOMPLOT_H diff --git a/wfdisplay/wfdisplay/lppmonplot/lppmonplot.cpp b/wfdisplay/wfdisplay/lppmonplot/lppmonplot.cpp deleted file mode 100644 --- a/wfdisplay/wfdisplay/lppmonplot/lppmonplot.cpp +++ /dev/null @@ -1,406 +0,0 @@ -#include "lppmonplot.h" - - - -LppMonPlot::LppMonPlot(QWidget *parent) : - QWidget(parent) -{ - this->m_plot = new QCustomPlot(this); - this->m_plot->setInteractions(QCustomPlot::iRangeDrag | QCustomPlot::iSelectAxes | - QCustomPlot::iSelectLegend | QCustomPlot::iSelectPlottables | QCustomPlot::iSelectTitle); - this->m_plot->setRangeDrag(Qt::Horizontal|Qt::Vertical); - this->m_plot->setRangeZoom(Qt::Horizontal|Qt::Vertical); - this->m_mainlayout = new QGridLayout(this); - this->setLayout(this->m_mainlayout); - this->m_mainlayout->addWidget(this->m_plot); - this->setMinimumSize(400,300); - this->setFocusPolicy(Qt::WheelFocus); - this->m_plot->setAttribute(Qt::WA_TransparentForMouseEvents); - this->ctrl_hold = false; - this->shift_hold = false; - this->mouse_hold = false; - this->show(); - -} - -void LppMonPlot::show() -{ - QWidget::show(); -} - -void LppMonPlot::setTitle(QString title) -{ - this->m_plot->setTitle(title); - this->repaint(); -} - -void LppMonPlot::setXaxisLabel(QString label) -{ - this->m_plot->xAxis->setLabel(label); - this->repaint(); -} - -void LppMonPlot::setYaxisLabel(QString label) -{ - this->m_plot->yAxis->setLabel(label); - this->repaint(); -} - -void LppMonPlot::setXaxisRange(double lower, double upper) -{ - this->m_plot->xAxis->setRange(lower,upper); -} - -void LppMonPlot::setYaxisRange(double lower, double upper) -{ - this->m_plot->yAxis->setRange(lower,upper); -} - - -void LppMonPlot::rescaleAxis() -{ - this->m_plot->rescaleAxes(); - this->m_plot->replot(); -} - -void LppMonPlot::setLegendFont(QFont font) -{ - this->m_plot->legend->setFont(font); - this->repaint(); -} - -void LppMonPlot::setLegendSelectedFont(QFont font) -{ - this->m_plot->legend->setSelectedFont(font); - this->repaint(); -} - -int LppMonPlot::addGraph() -{ - this->m_plot->addGraph(); - return this->m_plot->graphCount() -1; -} - - -void LppMonPlot::setGraphName(int graphIndex,QString name) -{ - if(graphIndexm_plot->graphCount()) - { - this->m_plot->graph(graphIndex)->setName(name); - } -} - - -void LppMonPlot::setGraphData(int graphIndex, QList x, QList y) -{ - if((graphIndexm_plot->graphCount()) && (x.count()==y.count()))// && (x.at(0).type()==QVariant::Double)) - { - QVector _x(x.count()), _y(y.count()); - for(int i=0;i(); - _y[i] = y.at(i).value();*/ - _x[i] = x.at(i).toDouble(); - _y[i] = y.at(i).toDouble(); - } - this->m_plot->graph(graphIndex)->setData(_x,_y); - } - this->m_plot->replot(); -} - -void LppMonPlot::addGraphData(int graphIndex, QList x, QList y) -{ - if((graphIndexm_plot->graphCount()) && (x.count()==y.count()))// && (x.at(0).type()==QVariant::Double)) - { - QVector _x(x.count()), _y(y.count()); - for(int i=0;i(); - _y[i] = y.at(i).value();*/ - _x[i] = x.at(i).toDouble(); - _y[i] = y.at(i).toDouble(); - } - this->m_plot->graph(graphIndex)->addData(_x,_y); - } - this->m_plot->replot(); -} - -void LppMonPlot::addGraphData(int graphIndex, QVariant x, QVariant y) -{ - if(graphIndexm_plot->graphCount())// && (x.at(0).type()==QVariant::Double)) - { - this->m_plot->graph(graphIndex)->addData(x.toDouble(),y.toDouble()); - } - this->m_plot->replot(); -} - -void LppMonPlot::setGraphPen(int graphIndex,QPen pen) -{ - if(graphIndexm_plot->graphCount()) - { - this->m_plot->graph(graphIndex)->setPen(pen); - } -} - -QPen LppMonPlot::getGraphPen(int graphIndex) -{ - if(graphIndexm_plot->graphCount()) - { - return this->m_plot->graph(graphIndex)->pen(); - } -} - - - -void LppMonPlot::setGraphLineStyle(int graphIndex,QString lineStyle) -{ - if(graphIndexm_plot->graphCount()) - { - if(!lineStyle.compare("none")) - { - this->m_plot->graph(graphIndex)->setLineStyle(QCPGraph::lsNone); - return; - } - if(!lineStyle.compare("line")) - { - this->m_plot->graph(graphIndex)->setLineStyle(QCPGraph::lsLine); - return; - } - if(!lineStyle.compare("stepleft")) - { - this->m_plot->graph(graphIndex)->setLineStyle(QCPGraph::lsStepLeft); - return; - } - if(!lineStyle.compare("stepright")) - { - this->m_plot->graph(graphIndex)->setLineStyle(QCPGraph::lsStepRight); - return; - } - if(!lineStyle.compare("stepcenter")) - { - this->m_plot->graph(graphIndex)->setLineStyle(QCPGraph::lsStepCenter); - return; - } - if(!lineStyle.compare("impulse")) - { - this->m_plot->graph(graphIndex)->setLineStyle(QCPGraph::lsImpulse); - return; - } - - - } -} - -void LppMonPlot::setGraphScatterStyle(int graphIndex,QString scatterStyle) -{ - if(graphIndexm_plot->graphCount()) - { - if(!scatterStyle.compare("none")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssNone); - return; - } - if(!scatterStyle.compare("dot")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssDot); - return; - } - if(!scatterStyle.compare("cross")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssCross); - return; - } - if(!scatterStyle.compare("plus")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssPlus); - return; - } - if(!scatterStyle.compare("circle")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssCircle); - return; - } - if(!scatterStyle.compare("disc")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssDisc); - return; - } - if(!scatterStyle.compare("square")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssSquare); - return; - } - if(!scatterStyle.compare("diamond")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssDiamond); - return; - } - if(!scatterStyle.compare("star")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssStar); - return; - } - if(!scatterStyle.compare("triangle")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssTriangle); - return; - } - if(!scatterStyle.compare("invertedtriangle")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssTriangleInverted); - return; - } - if(!scatterStyle.compare("crosssquare")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssCrossSquare); - return; - } - if(!scatterStyle.compare("plussquare")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssPlusSquare); - return; - } - if(!scatterStyle.compare("crosscircle")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssCrossCircle); - return; - } - if(!scatterStyle.compare("pluscircle")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssPlusCircle); - return; - } - if(!scatterStyle.compare("peace")) - { - this->m_plot->graph(graphIndex)->setScatterStyle(QCP::ssPeace); - return; - } - - } -} - - - - - -void LppMonPlot::keyPressEvent(QKeyEvent * event) -{ - switch(event->key()) - { - case Qt::Key_Control: - this->ctrl_hold = true; - break; - case Qt::Key_Shift: - this->shift_hold = true; - break; - case Qt::Key_M: - this->rescaleAxis(); - break; - default: - QWidget::keyPressEvent(event); - break; - } -} - -void LppMonPlot::keyReleaseEvent(QKeyEvent * event) -{ - switch(event->key()) - { - case Qt::Key_Control: - event->accept(); - this->ctrl_hold = false; - break; - case Qt::Key_Shift: - event->accept(); - this->shift_hold = false; - break; - default: - QWidget::keyReleaseEvent(event); - break; - } -} - -void LppMonPlot::wheelEvent(QWheelEvent * event) -{ - double factor; - double wheelSteps = event->delta()/120.0; // a single step delta is +/-120 usually - if(ctrl_hold) - { - if (event->orientation()==Qt::Vertical)//mRangeZoom.testFlag(Qt::Vertical)) - { - factor = pow(this->m_plot->rangeZoomFactor(Qt::Vertical), wheelSteps); - QCPAxis* axis = this->m_plot->rangeZoomAxis(Qt::Vertical); - axis->scaleRange(factor, axis->pixelToCoord(event->pos().y())); - } - this->m_plot->replot(); - QWidget::wheelEvent(event); - return; - } - if(shift_hold) - { - if (event->orientation()==Qt::Vertical)//mRangeZoom.testFlag(Qt::Vertical)) - { - factor = pow(this->m_plot->rangeZoomFactor(Qt::Horizontal), wheelSteps); - QCPAxis* axis = this->m_plot->rangeZoomAxis(Qt::Horizontal); - axis->scaleRange(factor, axis->pixelToCoord(event->pos().x())); - } - this->m_plot->replot(); - QWidget::wheelEvent(event); - return; - } - QCPAxis* Haxis = this->m_plot->rangeDragAxis(Qt::Horizontal); - double rg = (Haxis->range().upper - Haxis->range().lower)*(wheelSteps/10); - Haxis->setRange(Haxis->range().lower+(rg), Haxis->range().upper+(rg)); - this->m_plot->replot(); - QWidget::wheelEvent(event); -} - - - - -void LppMonPlot::mousePressEvent(QMouseEvent *event) -{ - if(event->button()==Qt::LeftButton) - { - mDragStart = event->pos(); - this->mouse_hold = true; - DragStartHorzRange = this->m_plot->rangeDragAxis(Qt::Horizontal)->range(); - DragStartVertRange = this->m_plot->rangeDragAxis(Qt::Vertical)->range(); - } - QWidget::mousePressEvent(event); -} - -void LppMonPlot::mouseReleaseEvent(QMouseEvent *event) -{ - if(event->button()==Qt::LeftButton) - { - this->mouse_hold = false; - } - QWidget::mouseReleaseEvent(event); -} - -void LppMonPlot::mouseMoveEvent(QMouseEvent *event) -{ - if(mouse_hold) - { - QCPAxis* Haxis = this->m_plot->rangeDragAxis(Qt::Horizontal); - QCPAxis* Vaxis = this->m_plot->rangeDragAxis(Qt::Vertical); - double diff = Haxis->pixelToCoord(mDragStart.x()) - Haxis->pixelToCoord(event->pos().x()); - Haxis->setRange(DragStartHorzRange.lower+diff, DragStartHorzRange.upper+diff); - diff = Vaxis->pixelToCoord(mDragStart.y()) - Vaxis->pixelToCoord(event->pos().y()); - Vaxis->setRange(DragStartVertRange.lower+diff, DragStartVertRange.upper+diff); - this->m_plot->replot(); - } - QWidget::mouseMoveEvent(event); -} - - - - - - - - - - - diff --git a/wfdisplay/wfdisplay/lppmonplot/lppmonplot.h b/wfdisplay/wfdisplay/lppmonplot/lppmonplot.h deleted file mode 100644 --- a/wfdisplay/wfdisplay/lppmonplot/lppmonplot.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef LPPMONPLOT_H -#define LPPMONPLOT_H - -#include -#include -#include - -class LppMonPlot : public QWidget -{ - Q_OBJECT -public: - explicit LppMonPlot(QWidget *parent = 0); - void setTitle(QString title); - void setXaxisLabel(QString label); - void setXaxisRange(double lower, double upper); - void setYaxisLabel(QString label); - void setYaxisRange(double lower, double upper); - void rescaleAxis(); - void setLegendFont(QFont font); - void setLegendSelectedFont(QFont font); - int addGraph(); - void setGraphName(int graphIndex,QString name); - void setGraphData(int graphIndex, QList x, QList y); - void addGraphData(int graphIndex, QList x, QList y); - void addGraphData(int graphIndex, QVariant x, QVariant y); - void setGraphPen(int graphIndex,QPen pen); - QPen getGraphPen(int graphIndex); - void setGraphLineStyle(int graphIndex,QString lineStyle); - void setGraphScatterStyle(int graphIndex,QString scatterStyle); - void show(); - -signals: - -public slots: - -protected: - void keyPressEvent(QKeyEvent *); - void keyReleaseEvent(QKeyEvent *); - void wheelEvent(QWheelEvent *); - void mousePressEvent(QMouseEvent *); - void mouseMoveEvent(QMouseEvent *); - void mouseReleaseEvent(QMouseEvent *); - -private: - QCustomPlot* m_plot; - QGridLayout* m_mainlayout; - bool ctrl_hold; - bool shift_hold; - bool mouse_hold; - QCPRange DragStartHorzRange; - QCPRange DragStartVertRange; - QPoint mDragStart; -}; - -#endif // LPPMONPLOT_H diff --git a/wfdisplay/wfdisplay/wfdisplay.cpp b/wfdisplay/wfdisplay/wfdisplay.cpp --- a/wfdisplay/wfdisplay/wfdisplay.cpp +++ b/wfdisplay/wfdisplay/wfdisplay.cpp @@ -30,7 +30,7 @@ WFDisplay::WFDisplay(QWidget *parent, un } void WFDisplay::displayOnPlot(short *data, unsigned char num_page, unsigned char num, - unsigned int coarseTime, unsigned int fineTime, float deltaT, unsigned int nbData) + unsigned int coarseTime, unsigned int fineTime, double deltaT, unsigned int nbData) { QVector x(nbData), y(nbData); diff --git a/wfdisplay/wfdisplay/wfdisplay.h b/wfdisplay/wfdisplay/wfdisplay.h --- a/wfdisplay/wfdisplay/wfdisplay.h +++ b/wfdisplay/wfdisplay/wfdisplay.h @@ -25,8 +25,7 @@ public: QVBoxLayout *waveforms_LAYOUT; void displayOnPlot(short *data, unsigned char num_page, unsigned char num, - unsigned int coarseTime, unsigned int fineTime, float deltaT, unsigned int nbData); - + unsigned int coarseTime, unsigned int fineTime, double deltaT, unsigned int nbData); signals: diff --git a/wfdisplay/wfdisplay/wfdisplay.pro.user b/wfdisplay/wfdisplay/wfdisplay.pro.user --- a/wfdisplay/wfdisplay/wfdisplay.pro.user +++ b/wfdisplay/wfdisplay/wfdisplay.pro.user @@ -1,6 +1,6 @@ - + ProjectExplorer.Project.ActiveTarget diff --git a/wfdisplay/wfdisplay/wfdisplay_bis.cpp b/wfdisplay/wfdisplay/wfdisplay_bis.cpp deleted file mode 100644 --- a/wfdisplay/wfdisplay/wfdisplay_bis.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include "wfdisplay.h" -#include - -WFDisplay::WFDisplay(QWidget *parent) : - QWidget(parent) -{ - waveforms_LAYOUT = new QVBoxLayout; - - spwTabWidget = new QTabWidget; - - page_f0 = new WFPage; - page_f1 = new WFPage; - page_f2 = new WFPage; - page_f3 = new WFPage; - - spwTabWidget->addTab(page_f0, tr("f0")); - spwTabWidget->addTab(page_f1, tr("f1")); - spwTabWidget->addTab(page_f2, tr("f2")); - spwTabWidget->addTab(page_f3, tr("f3")); - - waveforms_LAYOUT->addWidget(spwTabWidget); - - this->setLayout(waveforms_LAYOUT); - -} - -void WFDisplay::displayOnPlot(short *data, unsigned char num_page, unsigned char num) -{ - QVector x(XMAX), y(XMAX); - - for (int i=0; idisplayOnPlot(data, num); - break; - case 1: - page_f1->displayOnPlot(data, num); - break; - case 2: - page_f2->displayOnPlot(data, num); - break; - case 3: - page_f3->displayOnPlot(data, num); - break; - } - -} - diff --git a/wfdisplay/wfdisplay/wfdisplay_bis.h b/wfdisplay/wfdisplay/wfdisplay_bis.h deleted file mode 100644 --- a/wfdisplay/wfdisplay/wfdisplay_bis.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef WFDISPLAY_H -#define WFDISPLAY_H - -#include -#include -#include -#include -#include -#include -#include -#include - -class WFDisplay : public QWidget -{ - Q_OBJECT -public: - explicit WFDisplay(QWidget *parent = 0); - - WFPage * page_f0; - WFPage * page_f1; - WFPage * page_f2; - WFPage * page_f3; - - QTabWidget *spwTabWidget; - - QVBoxLayout *waveforms_LAYOUT; - - void displayOnPlot(short *data, unsigned char num_page, unsigned char num); - - -signals: - -public slots: - -}; - -#endif // WFDISPLAY_H diff --git a/wfdisplay/wfdisplay/wfpage.cpp b/wfdisplay/wfdisplay/wfpage.cpp --- a/wfdisplay/wfdisplay/wfpage.cpp +++ b/wfdisplay/wfdisplay/wfpage.cpp @@ -57,8 +57,6 @@ WFPage::WFPage(QWidget *parent, unsigned storageEnabled = false; allowDataStorage = false; - indexOffset = 0; - createToolBar(); readSettings(); } @@ -74,7 +72,7 @@ WFPage::~WFPage() free(dataBuffer); } -void WFPage::displayOnPlot(short *data, unsigned char num, unsigned int coarseTime, unsigned int fineTime, float deltaT, unsigned int nbData) +void WFPage::displayOnPlot(short *data, unsigned char num, unsigned int coarseTime, unsigned int fineTime, double deltaT, unsigned int nbData) { fillDataBuffer( data, num, coarseTime, fineTime, deltaT, nbData ); @@ -113,7 +111,7 @@ void WFPage::initDataBuffer() } } -void WFPage::fillDataBuffer(short *data, unsigned char num, unsigned int coarseTime, unsigned int fineTime, float deltaT, unsigned int nbData) +void WFPage::fillDataBuffer(short *data, unsigned char num, unsigned int coarseTime, unsigned int fineTime, double deltaT, unsigned int nbData) { double sampleTime; QByteArray sampleTimeQByteArray; @@ -128,7 +126,7 @@ void WFPage::fillDataBuffer(short *data, for (unsigned int i=0; iappend( sampleTimeQByteArray + ' ' + QByteArray::number(data[i]) ); @@ -154,7 +152,7 @@ void WFPage::fillDataBuffer(short *data, { dataBuffer[i]->append( ' ' + QByteArray::number(data[i]) ); } - storeDataBuffer(); + storeDataBuffer( nbData ); allowDataStorage = false; } break; @@ -166,13 +164,12 @@ void WFPage::fillDataBuffer(short *data, } } -void WFPage::storeDataBuffer() +void WFPage::storeDataBuffer( unsigned int nbData) { - for (int i = 0; i < DEFAULT_SIZE; i++ ) + for (unsigned int i = 0; i < nbData; i++ ) { *(this->logFileStrm) << *dataBuffer[i] << endl; } - indexOffset = indexOffset + DEFAULT_SIZE; if (storageEnabled == false){ this->logFileStrm->flush(); this->logFile->waitForBytesWritten(3000); @@ -542,7 +539,6 @@ void WFPage::storeWfrm() if (logFileEn == false) { buildFileName(); - indexOffset = 0; label_storeWfrm->setText("Recording..."); logFileEn = true; } diff --git a/wfdisplay/wfdisplay/wfpage.h b/wfdisplay/wfdisplay/wfpage.h --- a/wfdisplay/wfdisplay/wfpage.h +++ b/wfdisplay/wfdisplay/wfpage.h @@ -84,17 +84,15 @@ public: QTextStream *logFileStrm; - unsigned int indexOffset; - QString pageTitle; QString defaultStorageDirectory; //QGridLayout *mainLayout; - void displayOnPlot(short *data, unsigned char num, unsigned int coarseTime, unsigned int fineTime, float deltaT, unsigned int nbData); + void displayOnPlot(short *data, unsigned char num, unsigned int coarseTime, unsigned int fineTime, double deltaT, unsigned int nbData); void initDataBuffer(); - void fillDataBuffer(short *data, unsigned char num, unsigned int coarseTime, unsigned int fineTime, float deltaT, unsigned int nbData); - void storeDataBuffer(); + void fillDataBuffer(short *data, unsigned char num, unsigned int coarseTime, unsigned int fineTime, double deltaT, unsigned int nbData); + void storeDataBuffer(unsigned int nbData); bool allowDataStorage; diff --git a/wfdisplaytest/wfdisplaytest b/wfdisplaytest/wfdisplaytest deleted file mode 100755 index 5d7dcb05e746d2a38a1cff0b5426d8d62889780a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 GIT binary patch literal 0 Hc$@