mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-21 12:15:21 +00:00
Refactor folder (#10475)
Move many third-party components' source codes from the src folder to a new folder called deps_src. The goal is to make the code structure clearer and easier to navigate.
This commit is contained in:
12
deps_src/qhull/src/user_eg3/user_eg3.pro
Normal file
12
deps_src/qhull/src/user_eg3/user_eg3.pro
Normal file
@@ -0,0 +1,12 @@
|
||||
# -------------------------------------------------
|
||||
# user_eg3.pro -- Qt project for cpp demonstration user_eg3.exe
|
||||
#
|
||||
# The C++ interface requires reentrant Qhull.
|
||||
# -------------------------------------------------
|
||||
|
||||
include(../qhull-app-cpp.pri)
|
||||
|
||||
TARGET = user_eg3
|
||||
CONFIG -= qt
|
||||
|
||||
SOURCES += user_eg3_r.cpp
|
||||
162
deps_src/qhull/src/user_eg3/user_eg3_r.cpp
Normal file
162
deps_src/qhull/src/user_eg3/user_eg3_r.cpp
Normal file
@@ -0,0 +1,162 @@
|
||||
#//! user_eg3_r.cpp -- Invoke rbox and qhull from C++
|
||||
|
||||
#include "libqhullcpp/RboxPoints.h"
|
||||
#include "libqhullcpp/QhullError.h"
|
||||
#include "libqhullcpp/QhullQh.h"
|
||||
#include "libqhullcpp/QhullFacet.h"
|
||||
#include "libqhullcpp/QhullFacetList.h"
|
||||
#include "libqhullcpp/QhullLinkedList.h"
|
||||
#include "libqhullcpp/QhullVertex.h"
|
||||
#include "libqhullcpp/Qhull.h"
|
||||
|
||||
#include <cstdio> /* for printf() of help message */
|
||||
#include <ostream>
|
||||
#include <stdexcept>
|
||||
|
||||
using std::cerr;
|
||||
using std::cin;
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
|
||||
using orgQhull::Qhull;
|
||||
using orgQhull::QhullError;
|
||||
using orgQhull::QhullFacet;
|
||||
using orgQhull::QhullFacetList;
|
||||
using orgQhull::QhullQh;
|
||||
using orgQhull::RboxPoints;
|
||||
using orgQhull::QhullVertex;
|
||||
using orgQhull::QhullVertexSet;
|
||||
|
||||
int main(int argc, char **argv);
|
||||
int user_eg3(int argc, char **argv);
|
||||
|
||||
char prompt[]= "\n\
|
||||
user_eg3 -- demonstrate calling rbox and qhull from C++.\n\
|
||||
\n\
|
||||
user_eg3 is statically linked to reentrant qhull. If user_eg3\n\
|
||||
fails immediately, it is probably linked to the non-reentrant qhull.\n\
|
||||
Try 'user_eg3 rbox qhull \"T1\"'\n\
|
||||
\n\
|
||||
eg-100 Run the example in qh-code.htm\n\
|
||||
rbox \"200 D4\" ... Generate points from rbox\n\
|
||||
qhull \"d p\" ... Run qhull and produce output\n\
|
||||
qhull-cout \"o\" ... Run qhull and produce output to cout\n\
|
||||
qhull \"T1\" ... Run qhull with level-1 trace to cerr\n\
|
||||
facets Print facets when done\n\
|
||||
\n\
|
||||
For example\n\
|
||||
user_eg3 rbox qhull\n\
|
||||
user_eg3 rbox qhull d\n\
|
||||
user_eg3 rbox \"10 D2\" \"2 D2\" qhull \"s p\" facets\n\
|
||||
\n\
|
||||
";
|
||||
|
||||
|
||||
/*--------------------------------------------
|
||||
-user_eg3- main procedure of user_eg3 application
|
||||
*/
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
QHULL_LIB_CHECK
|
||||
|
||||
if(argc==1){
|
||||
cout << prompt;
|
||||
return 1;
|
||||
}
|
||||
try{
|
||||
return user_eg3(argc, argv);
|
||||
}catch(QhullError &e){
|
||||
cerr << e.what() << std::endl;
|
||||
return e.errorCode();
|
||||
}
|
||||
}//main
|
||||
|
||||
int user_eg3(int argc, char **argv)
|
||||
{
|
||||
if(strcmp(argv[1], "eg-100")==0){
|
||||
RboxPoints rbox("100");
|
||||
Qhull q(rbox, "");
|
||||
QhullFacetList facets= q.facetList();
|
||||
cout << facets;
|
||||
return 0;
|
||||
}
|
||||
bool printFacets= false;
|
||||
RboxPoints rbox;
|
||||
Qhull qhull;
|
||||
int readingRbox= 0;
|
||||
int readingQhull= 0;
|
||||
for(int i=1; i<argc; i++){
|
||||
if(strcmp(argv[i], "rbox")==0){
|
||||
if(readingRbox!=0 || readingQhull!=0){
|
||||
cerr << "user_eg3 -- \"rbox\" must be first" << endl;
|
||||
return 1;
|
||||
}
|
||||
readingRbox++;
|
||||
}else if(strcmp(argv[i], "qhull")==0
|
||||
|| strcmp(argv[i], "qhull-cout")==0){
|
||||
if(readingQhull){
|
||||
cerr << "user_eg3 -- only one \"qhull\" or \"qhull-cout\" allowed." << endl;
|
||||
return 1;
|
||||
}
|
||||
if(strcmp(argv[i], "qhull-cout")==0){
|
||||
qhull.setOutputStream(&cout);
|
||||
}
|
||||
if(rbox.isEmpty()){
|
||||
if(readingRbox){
|
||||
rbox.appendPoints("10 D2");
|
||||
}else{
|
||||
cerr << "Enter dimension count coordinates. End with ^Z (Windows) or ^D (Unix).\n";
|
||||
rbox.appendPoints(cin);
|
||||
}
|
||||
}
|
||||
readingQhull++;
|
||||
readingRbox= 0;
|
||||
}else if(strcmp(argv[i], "facets")==0){
|
||||
printFacets= true;
|
||||
}else if(readingRbox){
|
||||
readingRbox++;
|
||||
cerr << "rbox " << argv[i] << endl;
|
||||
rbox.appendPoints(argv[i]);
|
||||
if(rbox.hasRboxMessage()){
|
||||
cerr << "user_eg3 " << argv[i] << " -- " << rbox.rboxMessage();
|
||||
return rbox.rboxStatus();
|
||||
}
|
||||
}else if(readingQhull){
|
||||
if(readingQhull==1){
|
||||
qhull.runQhull(rbox, argv[i]);
|
||||
qhull.outputQhull();
|
||||
}else{
|
||||
qhull.outputQhull(argv[i]);
|
||||
}
|
||||
readingQhull++;
|
||||
if(qhull.hasQhullMessage()){
|
||||
cerr << "\nResults of " << argv[i] << "\n" << qhull.qhullMessage();
|
||||
qhull.clearQhullMessage();
|
||||
}
|
||||
}else{
|
||||
cerr << "user_eg3 error: Expecting qhull, qhull-cout, or rbox. Got " << argv[i] << endl;
|
||||
return 1;
|
||||
}
|
||||
}//foreach argv
|
||||
if(readingRbox){
|
||||
cout << rbox;
|
||||
return 0;
|
||||
}
|
||||
if(readingQhull==1){ // e.g., rbox 10 qhull
|
||||
qhull.runQhull(rbox, "");
|
||||
qhull.outputQhull();
|
||||
if(qhull.hasQhullMessage()){
|
||||
cerr << "\nResults of qhull\n" << qhull.qhullMessage();
|
||||
qhull.clearQhullMessage();
|
||||
}
|
||||
}
|
||||
if(qhull.hasOutputStream()){
|
||||
return 0;
|
||||
}
|
||||
if(printFacets){
|
||||
QhullFacetList facets= qhull.facetList();
|
||||
cout << "\nFacets created by Qhull::runQhull()\n" << facets;
|
||||
}
|
||||
return 0;
|
||||
}//user_eg3
|
||||
|
||||
Reference in New Issue
Block a user