Example #1
0
ClsQStateArrayViewHex::ClsQStateArrayViewHex( QWidget *parent, ClsBaseTopology *_clsBaseTopologyGroup,
						const char *_name, unsigned int _iSelectionMode ) :
    ClsBaseQStateArrayView(parent, _clsBaseTopologyGroup, _name, _iSelectionMode) {

    iCellSize = 20;
    iNrCellsX = 10;
    iNrCellsY = 10;

    setBackgroundColor(yellow);


    ParameterList parameterList = _clsBaseTopologyGroup->getListParameters();

    while (parameterList.size()) {
	string strParamName = parameterList.front()->getName();
	string strParamValue = parameterList.front()->getValueAsString();

//	cout << "ParamName: " << strParamName << ": " << strParamValue << endl;

	if(!strParamName.compare(ClsTagLibrary::TopologyWidthTag())) {
	    iNrCellsX = iqrUtils::string2int(strParamValue);

	}
	else if(!strParamName.compare(ClsTagLibrary::TopologyHeightTag())) {
	    iNrCellsY =  iqrUtils::string2int(strParamValue);
	}

	parameterList.pop_front();
    }

    iCellSize = iSizeMax / (iNrCellsX > iNrCellsY ? iNrCellsX : iNrCellsY);

    vCells.resize(iNrCellsX+1);
    for(int ii=0; ii<(iNrCellsX + 1);ii++){
	vCells[ii].resize(iNrCellsY+1);
    }


    iXPosStart = iYPosStart = 0;


    fValMin = 0;
    fValMax = 1.0;
    fScaleFactor = 255.0;
    this->setFrameStyle(  QFrame::WinPanel | QFrame::Raised );

    setMinimumSize( iNrCellsX * iCellSize + 2 * BORDER , iNrCellsY * iCellSize + 2 * BORDER );
    setMaximumSize( iNrCellsX * iCellSize + 2 * BORDER , iNrCellsY * iCellSize + 2 * BORDER );

    clear();
    createNullPixmap();

//    resize( maxi * SCALE + 2 * BORDER , maxj * SCALE + 2 * BORDER );
//    resize( iNrCellsX * iCellSize + 2 * BORDER , iNrCellsY * iCellSize + 2 * BORDER );

}
Example #2
0
ClsQStateArrayViewRect::ClsQStateArrayViewRect( QWidget *parent, ClsBaseTopology *_clsBaseTopologyGroup,
						const char *_name, unsigned int _iSelectionMode ) :
    ClsBaseQStateArrayView(parent, _clsBaseTopologyGroup, _name, _iSelectionMode) {
#ifdef DEBUG_CLSQSTATEARRAYVIEWRECT
    cout << "ClsQStateArrayViewRect( QWidget *parent, ClsBaseTopology *_clsBaseTopologyGroup, const char *_name, unsigned int _iSelectionMode ) " << endl;
#endif

    iCellSize = 20;
    iNrCellsX = 10;
    iNrCellsY = 10;

    ParameterList parameterList = _clsBaseTopologyGroup->getListParameters();

    while (parameterList.size()) {
	string strParamName = parameterList.front()->getName();
	string strParamValue = parameterList.front()->getValueAsString();
	if(!strParamName.compare(ClsTagLibrary::TopologyWidthTag())) {
	    iNrCellsX = iqrUtils::string2int(strParamValue);
	}
	else if(!strParamName.compare(ClsTagLibrary::TopologyHeightTag())) {
	    iNrCellsY =  iqrUtils::string2int(strParamValue);
	}
	parameterList.pop_front();
    }

    iCellSize = iSizeMax / (iNrCellsX > iNrCellsY ? iNrCellsX : iNrCellsY);
    if(iCellSize <=1){
	iCellSize = 2;
    }

    vCells.resize(iNrCellsX+1);
    for(int ii=0; ii<(iNrCellsX + 1);ii++){
	vCells[ii].resize(iNrCellsY+1);
    }

    this->setFrameStyle(  QFrame::WinPanel | QFrame::Raised );

    setMinimumSize( iNrCellsX * iCellSize + 2 * BORDER , iNrCellsY * iCellSize + 2 * BORDER );
    setMaximumSize( iNrCellsX * iCellSize + 2 * BORDER , iNrCellsY * iCellSize + 2 * BORDER );

    clear();
    createNullPixmap();


}
double checkParamEqualCharacterCount(const ParameterList & parameterList, predicateCallbackType predicateCallback, numericalFluentCallbackType numericalFluentCallback, int relaxed)
{
   ROS_DEBUG("Calling %s module", __func__);
   if(parameterList.empty())
      return false;
   Parameter p1 = parameterList.front();
   // we care for the instance, not the name itself
   int len = p1.value.length();
   return (len % 2 == 0);
}
double can_load(const ParameterList & parameterList,
       predicateCallbackType predicateCallback, numericalFluentCallbackType numericalFluentCallback, int )
{
  ROS_DEBUG("Calling module %s", __func__);

  static int count = 0;
  count++;
  //cout << "Count: " << count << endl;
   if(DEBUG_MOD)
      cout << parameterList << endl;

  PredicateList* list = NULL;
  predicateCallback(list);

  if(list == NULL) {
     exit(1);
     return false;
  }

  if(DEBUG_MOD) {
     cout << "Predicates are: " << endl;
     cout << *list << endl;
  }

  string me = parameterList.front().value;
  string pack = parameterList.back().value;

  deque<string> packs_in_truck;
  for(PredicateList::iterator it = list->begin(); it != list->end(); it++) {
      Predicate p = *it;
      if(!p.value)
         continue;
      if(p.name != "in")
         continue;
      if(p.parameters.back().value == me)
         packs_in_truck.push_back(p.parameters.front().value);
  }

  if(DEBUG_MOD) {
     for(deque<string>::iterator it = packs_in_truck.begin(); it != packs_in_truck.end(); it++) {
        cout << *it << endl;
     }
     if(packs_in_truck.empty()) {
        cout << "No packs in " << me << endl;
     } else {
        cout << packs_in_truck.size() << " packs i truck " << me << endl;
     }
  }
  packs_in_truck.push_back(pack);

  NumericalFluentList* nfl = new NumericalFluentList();
  for(deque<string>::iterator it = packs_in_truck.begin(); it != packs_in_truck.end(); it++) {
     ParameterList pl;
     pl.push_back(Parameter("p", "package", *it));
     nfl->push_back(NumericalFluent("package-size", pl));
  }
  ParameterList plt;
  plt.push_back(Parameter("v", "vehicle", me));
  nfl->push_back(NumericalFluent("capacity", plt));

  if(!numericalFluentCallback(nfl)) {
     exit(1);
     return false;
  }

  if(DEBUG_MOD)
     cout << *nfl << endl;

  // ideally: get sizes 1 - n-2, size n-1 == package, size n == capcity
  // 1..n-2 + n == full_load
  deque<double> packs;
  for(NumericalFluentList::iterator it = nfl->begin(); it != nfl->end(); it++) {
     packs.push_back((*it).value);
  } 
  double cap = packs.back();
  packs.erase(packs.end() - 1);
  double pSize = packs.back();
  packs.erase(packs.end() - 1);

  if(DEBUG_MOD)
      cout << "Packs" << packs.size() <<endl;
  double sumPacks = 0;
  for(deque<double>::iterator it = packs.begin(); it != packs.end(); it++) {
      if(DEBUG_MOD)
          cout << *it << endl;
      sumPacks += *it;
  }
  if(DEBUG_MOD) {
     cout << "newpack " << pSize << endl;
     cout << "cap " << cap << endl;
  }

  double loadCap = sumPacks + cap;
  if(DEBUG_MOD) {
     cout << "loadCap " << loadCap;

     cout << endl;
  }

  packs.push_back(pSize);

  bool loadPoss = checkLoading(packs, loadCap);
  return loadPoss;
}