diff --git Makefile.am Makefile.am index 875cfda..1585028 100644 --- Makefile.am +++ Makefile.am @@ -16,21 +16,15 @@ SampleData/truckLoadingPlan1.xml \ SampleData/truckLoadingJob1.xml \ Schema/* -bin_PROGRAMS = palletViewer truckViewer - -palletViewer_SOURCES = \ -palletView/main.cc \ +lib_LTLIBRARIES = libpallet.la +libpallet_la_SOURCES = \ +palletView/libpallet.cc \ palletView/palletViewer.h \ palletView/palletViewer.cc \ -palletView/mouse.hh \ -palletView/mouse.cc \ -palletView/view.h \ -palletView/view.cc \ palletView/xml_parser.cc \ palletView/response.cc \ palletView/packlist.cc \ palletView/asBuilt.cc \ -palletView/mouse.hh \ palletView/scoreAsPlannedClasses.cc \ palletView/scoreAsPlannedClasses.hh \ palletView/scoreAsPlannedLex.cc \ @@ -41,8 +35,7 @@ palletView/packlist.h \ palletView/response.h \ palletView/xml_parser.h -palletViewer_CXXFLAGS = @X_CFLAGS@ @GL_CFLAGS@ @GLU_CFLAGS@ @GLUT_CFLAGS@ -I palletView -palletViewer_LDADD = @GLUT_LIBS@ @GLU_LIBS@ @GL_LIBS@ @X_EXTRA_LIBS@ @X_PRE_LIBS@ @X_LIBS@ +noinst_PROGRAMS = truckViewer truckViewer_SOURCES = \ truckView/mouse.cc \ @@ -67,4 +60,4 @@ truckView/xmlSchemaInstance.cc \ truckView/xmlSchemaInstance.hh truckViewer_CXXFLAGS = @X_CFLAGS@ @GL_CFLAGS@ @GLU_CFLAGS@ @GLUT_CFLAGS@ -truckViewer_LDADD = $(bin_LIBS) @GLUT_LIBS@ @GLU_LIBS@ @GL_LIBS@ @X_EXTRA_LIBS@ @X_PRE_LIBS@ @X_LIBS@ -lX11 +truckViewer_LDADD = $(bin_LIBS) @GLUT_LIBS@ @GLU_LIBS@ @GL_LIBS@ @X_EXTRA_LIBS@ @X_PRE_LIBS@ @X_LIBS@ -lX11 -lglut diff --git configure.ac configure.ac index ed990a4..4095c7d 100644 --- configure.ac +++ configure.ac @@ -6,6 +6,8 @@ AM_CONFIG_HEADER(./config.h) # Checks for programs. AC_PROG_CXX +LT_INIT + # Checks for header files. AC_HEADER_STDC @@ -18,3 +20,4 @@ AX_CHECK_GLUT AC_CONFIG_FILES([Makefile]) AC_OUTPUT + diff --git palletView/asBuilt.cc palletView/asBuilt.cc index d27d7b7..bedfd40 100755 --- palletView/asBuilt.cc +++ palletView/asBuilt.cc @@ -28,7 +28,7 @@ #ifdef MOASTSTATIC #include "asBuilt.h" #else -#include +#include "asBuilt.h" #endif #include "response.h" #include diff --git palletView/libpallet.cc palletView/libpallet.cc new file mode 100644 index 0000000..bc6d8cf --- /dev/null +++ palletView/libpallet.cc @@ -0,0 +1,9 @@ +#include "palletViewer.h" + +extern "C" +{ + double evaluate(char* orderFile, char* packlistFile, char* scoringFile) + { + return PalletViewer::evaluate(orderFile, packlistFile, scoringFile); + } +} diff --git palletView/packlist.cc palletView/packlist.cc index 9aeceab..1cb31c5 100644 --- palletView/packlist.cc +++ palletView/packlist.cc @@ -28,8 +28,8 @@ #include "packlist.h" #include "xml_parser.h" #else -#include -#include +#include "packlist.h" +#include "xml_parser.h" #endif #include #include @@ -193,7 +193,6 @@ Order readOrder( Order order; order.parse(xml_parse_tag(orderlist_xml, "Order")); - printf("Order Read.\n"); free(orderlist_buf); return order; } @@ -215,7 +214,6 @@ Pallet readPallet( Pallet pallet; pallet.parse(xml_parse_tag(pallet_xml, "Pallets")); - printf("Pallets Read.\n"); free(pallet_buf); return pallet; } diff --git palletView/palletViewer.cc palletView/palletViewer.cc index 99cb1e7..8804146 100644 --- palletView/palletViewer.cc +++ palletView/palletViewer.cc @@ -30,7 +30,7 @@ #include #include #include -#include "view.h" // for draw_string, gl functions, glut functions +//#include "view.h" // for draw_string, gl functions, glut functions #include "xml_parser.h" #include "packlist.h" #include "response.h" @@ -205,11 +205,12 @@ The font argument is actually a symbol such as GLUT_BITMAP_HELVETICA_10. */ -void PalletViewer::drawString( /* ARGUMENTS */ - float x, /* X location of start of text */ - float y, /* Y location of start of text */ - void * font, /* the font to use */ - char* string) /* the text to print */ +/* +void PalletViewer::drawString( *//* ARGUMENTS *//* + float x, *//* X location of start of text *//* + float y, *//* Y location of start of text *//* + void * font, *//* the font to use *//* + char* string) *//* the text to print *//* { char * c; @@ -219,6 +220,7 @@ void PalletViewer::drawString( /* ARGUMENTS */ glutBitmapCharacter(font, *c); } } +*/ /********************************************************************/ @@ -563,6 +565,54 @@ void PalletViewer::init( /* ARGUMENTS */ } +double PalletViewer::evaluate( /* ARGUMENTS */ + char * orderFile, /* name of order file */ + char * packlistFile, /* name of packlist file */ + char * scoringFileIn) /* name of scoring configuration file */ +{ + Order order; + unsigned int i; + + tolerance = 0; + strncpy(scoringFile, scoringFileIn, 100); + order = readOrder(orderFile); + makeColors(order.n_orderline()); + for (i = 0; i < order.n_orderline(); i++) + { + color.insert(std::pair + (order.orderline[i].article.id, colors[i])); + } + list = PackList::read_response(packlistFile); + yyin = fopen(scoringFile, "r"); + if (yyin == 0) + { + fprintf(stderr, "unable to open file %s for reading\n", scoringFile); + exit(1); + } + yyparse(); + fclose(yyin); + cpallet = list.packedPallets[0]; + checkPlannedItems(&order); + scale = 0.450f / max(cpallet.dimensions.length, cpallet.dimensions.width); + spacing = max(cpallet.dimensions.length, cpallet.dimensions.width)/9000.0f; + cpallet.findSequenceErrors(); + cpallet.findOverlaps(tolerance, MINIMUM_OVERLAP); + cpallet.findCogs(); + cpallet.findIntersections(tolerance); + cpallet.findOverhangs(tolerance); + cpallet.findPressures(); + cpallet.findPressureMetrics(); + cpallet.findVolumes(); + cpallet.findTotalErrors(); + findAsPlannedScore(); + + for (i = 0; i < cpallet.packages.size(); i++) { + recalculate(1); + if (countAsPlanned == cpallet.packages.size()) + return score; + } +} + /********************************************************************/ /* PalletViewer::insertBox @@ -581,15 +631,16 @@ The location point of a box is in the middle of the top of the box. */ -void PalletViewer::insertBox( /* ARGUMENTS */ - col boxColor, /* color of box */ - double minX, /* minimum value of X on box in millimeters */ - double minY, /* minimum value of Y on box in millimeters */ - double minZ, /* minimum value of Z on box in millimeters */ - double maxX, /* maximum value of X on box in millimeters */ - double maxY, /* maximum value of Y on box in millimeters */ - double maxZ, /* maximum value of Z on box in millimeters */ - bool solid) /* true = faces and edges, false = edges only */ +/* +void PalletViewer::insertBox( *//* ARGUMENTS *//* + col boxColor, *//* color of box *//* + double minX, *//* minimum value of X on box in millimeters *//* + double minY, *//* minimum value of Y on box in millimeters *//* + double minZ, *//* minimum value of Z on box in millimeters *//* + double maxX, *//* maximum value of X on box in millimeters *//* + double maxY, *//* maximum value of Y on box in millimeters *//* + double maxZ, *//* maximum value of Z on box in millimeters *//* + bool solid) *//* true = faces and edges, false = edges only *//* { static GLubyte allIndices[] = {4,5,6,7, 1,2,6,5, 0,1,5,4, 0,3,2,1, 0,4,7,3, 2,3,7,6}; @@ -643,6 +694,7 @@ void PalletViewer::insertBox( /* ARGUMENTS */ glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, allIndices); } } +*/ /********************************************************************/ @@ -794,9 +846,10 @@ gives metrics for the most recently loaded package. */ -void PalletViewer::printAsBuiltPackageText( /* ARGUMENTS */ - BuiltPackage * pack, /* Package to print from */ - float * wy) /* Y-value on screen at which to print */ +/* +void PalletViewer::printAsBuiltPackageText( *//* ARGUMENTS *//* + BuiltPackage * pack, *//* Package to print from *//* + float * wy) *//* Y-value on screen at which to print *//* { char str[STR_LENGTH]; // string to print in float yy; @@ -833,6 +886,7 @@ void PalletViewer::printAsBuiltPackageText( /* ARGUMENTS */ drawString(20.0f, (yy -= 15.0f), GLUT_BITMAP_HELVETICA_10, str); *wy = yy; } +*/ /********************************************************************/ @@ -852,8 +906,9 @@ corner of the metrics window. */ -void PalletViewer::printAsBuiltText( /* ARGUMENTS */ - int height) /* side of screen, in pixels */ +/* +void PalletViewer::printAsBuiltText( *//* ARGUMENTS *//* + int height) *//* side of screen, in pixels *//* { char str[STR_LENGTH]; // string to print in BuiltPackage * pack; // package to get data from @@ -875,6 +930,7 @@ void PalletViewer::printAsBuiltText( /* ARGUMENTS */ snprintf(str, STR_LENGTH, "Tolerance: %.4f millimeters", tolerance); drawString(20.0f, (wy -= 15.0f), GLUT_BITMAP_HELVETICA_10, str); } +*/ /********************************************************************/ @@ -890,9 +946,10 @@ loaded package. */ -void PalletViewer::printAsBuiltStackText( /* ARGUMENTS */ - BuiltPackage * pack, /* Package to print from */ - float * wy) /* Y-value on screen at which to print */ +/* +void PalletViewer::printAsBuiltStackText( *//* ARGUMENTS *//* + BuiltPackage * pack, *//* Package to print from *//* + float * wy) *//* Y-value on screen at which to print *//* { char str[STR_LENGTH]; // string to print in float yy; @@ -936,6 +993,7 @@ void PalletViewer::printAsBuiltStackText( /* ARGUMENTS */ drawString(20.0f, (yy -= 15.0f), GLUT_BITMAP_HELVETICA_10, str); *wy = yy; } +*/ /********************************************************************/ @@ -950,9 +1008,10 @@ gives metrics for the most recently loaded package. */ -void PalletViewer::printAsPlannedPackageText( /* ARGUMENTS */ - Package * pack, /* Package to print */ - float * wy) /* Y-value on screen at which to print */ +/* +void PalletViewer::printAsPlannedPackageText( *//* ARGUMENTS *//* + Package * pack, *//* Package to print *//* + float * wy) *//* Y-value on screen at which to print *//* { char str[STR_LENGTH]; // string to print in std::list::iterator iter; // iterator for intersections list @@ -1043,6 +1102,7 @@ void PalletViewer::printAsPlannedPackageText( /* ARGUMENTS */ drawString(20.0f, (yy -= 15.0f), GLUT_BITMAP_HELVETICA_10, str); *wy = yy; } +*/ /***********************************************************************/ @@ -1062,8 +1122,9 @@ corner of the metrics window. */ -void PalletViewer::printAsPlannedText( /* ARGUMENTS */ - int height) /* side of screen, in pixels */ +/* +void PalletViewer::printAsPlannedText( *//* ARGUMENTS *//* + int height) *//* side of screen, in pixels *//* { char str[STR_LENGTH]; // string to print in Package * pack; // package to get data from @@ -1087,6 +1148,7 @@ void PalletViewer::printAsPlannedText( /* ARGUMENTS */ snprintf(str, STR_LENGTH, "Scoring file: %s ", scoringFile); drawString(20.0f, (wy -= 15.0f), GLUT_BITMAP_HELVETICA_10, str); } +*/ /********************************************************************/ @@ -1107,9 +1169,10 @@ space before the next line is printed. */ -void PalletViewer::printAsPlannedStackText( /* ARGUMENTS */ - Package * pack, /* Package to print from */ - float * wy) /* Y-value on screen at which to print */ +/* +void PalletViewer::printAsPlannedStackText( *//* ARGUMENTS *//* + Package * pack, *//* Package to print from *//* + float * wy) *//* Y-value on screen at which to print *//* { char str[STR_LENGTH]; // string to print in float yy; @@ -1200,6 +1263,7 @@ void PalletViewer::printAsPlannedStackText( /* ARGUMENTS */ } *wy = yy; } +*/ /***********************************************************************/ @@ -1338,7 +1402,8 @@ in error, so they will be drawn as small gray boxes. */ -void PalletViewer::redraw() /* NO ARGUMENTS */ +/* +void PalletViewer::redraw() { float radToDeg = 57.29577958f; // for asBuilt double offsetX; // for as-planned, in millimeters @@ -1424,6 +1489,7 @@ void PalletViewer::redraw() /* NO ARGUMENTS */ } } } +*/ /********************************************************************/ diff --git palletView/palletViewer.h palletView/palletViewer.h index 1268687..260cebb 100644 --- palletView/palletViewer.h +++ palletView/palletViewer.h @@ -36,6 +36,7 @@ class PalletViewer static void findAsPlannedScore(); static void init(char * orderFile, char * packlistFile, char * asBuiltFile, char * scoringFileIn, double toleranceIn); + static double evaluate(char * orderFile, char * packlistFile, char * scoringFileIn); static void insertBox(col boxColor, double minX, double minY, double minZ, double maxX, double maxY, double maxZ, bool solid); static void makeColors(int howMany); diff --git palletView/response.cc palletView/response.cc index 346d3bc..a833eeb 100644 --- palletView/response.cc +++ palletView/response.cc @@ -556,7 +556,6 @@ PackList PackList::read_response( /* ARGUMENTS */ ifs.read(buffer, bufferLength); packlistString = buffer; list.parsePackList(xml_parse_tag(packlistString, "PackList")); - printf("PackList Read.\n"); free(buffer); return list; } diff --git palletView/scoreAsPlannedLex.cc palletView/scoreAsPlannedLex.cc index c73e4a0..16f1a56 100644 --- palletView/scoreAsPlannedLex.cc +++ palletView/scoreAsPlannedLex.cc @@ -890,7 +890,7 @@ static int input (void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#define ECHO #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, diff --git palletView/scoreAsPlannedYACC.cc palletView/scoreAsPlannedYACC.cc index 213f0c0..f9e55b6 100644 --- palletView/scoreAsPlannedYACC.cc +++ palletView/scoreAsPlannedYACC.cc @@ -163,7 +163,7 @@ -#include // for stderr +//#include // for stderr #include // for strcat #include // for malloc, free #include "scoreAsPlannedClasses.hh" // for scoreAsPlanned classes @@ -1273,7 +1273,6 @@ yyparse () #endif #endif { - int yystate; int yyn; int yyresult;