Ejemplo n.º 1
0
void PlnrExpVanderpauw::faces(
			DbsPlnr* dbsplnr
			, const ubigint refPlnrMDevice
			, const ubigint refSruAll
			, const ListPlnrMVertex& vtxs
			, const ListPlnrMLineguide& lgs
			, const ListPlnrMArcguide& ags
			, ListPlnrMFace& fces
		) {
	vector<ubigint> strrefs;
	vector<string> fsrefs;
	vector<string> vsrefsstrs;
	vector<string> rtesstrs;
	vector<string> gsrefsstrs;
	vector<string> dirsstrs;

	strrefs.push_back(refSruAll);
	fsrefs.push_back("f0");
	vsrefsstrs.push_back("v1; v2; v10;v9; v12;v11;v15;v16;v13;v14;v6; v5; v8; v7; v3; v4");
	rtesstrs.push_back	("lgd;lgd;lgd;agd;lgd;lgd;lgd;agd;lgd;lgd;lgd;agd;lgd;lgd;lgd;agd");
	gsrefsstrs.push_back("l8; l1; l9; a2; l2; l10;l3; a3; l9; l4; l8; a1; l3; l7; l2; a0");
	dirsstrs.push_back	("fwd;fwd;bwd;fwd;bwd;fwd;fwd;fwd;bwd;bwd;fwd;fwd;fwd;bwd;bwd;fwd");

	addFaces(dbsplnr, 0, strrefs, fsrefs, vsrefsstrs, rtesstrs, gsrefsstrs, dirsstrs, vtxs, lgs, ags, fces);
};
	//-----------------------------------------------------------------------------
	void VisibleBspLeavesSearch::enumVisibleBspLeaves(Bsp::NodeBase* _nodeBase, const size_t* _planeIndices)
	{
		CameraInfo::PlaneIndices planeIndices2;
		if(mCameraInfo->isVisibleBox(_nodeBase->getBoundingBoxCenter(), _nodeBase->getBoundingBoxHalfSize(), 
			_planeIndices, planeIndices2))
		{
			if(_nodeBase->isLeaf())
			{
				Bsp::Leaf* leaf = static_cast<Bsp::Leaf*>(_nodeBase);
				
				/*
				bool found = false;
				for(size_t i = 0; i != mBsp->getNumSectors(); ++i)
				{
					const Bsp::Sector& sector = mBsp->getSector(1);
					const vector<Bsp::Leaf*>::type& leaves = sector.getVisibleLeaves();
					if(std::find(leaves.begin(), leaves.end(), leaf) != leaves.end())
					{
						found = true;
						break;
					}
				}
				if(found)*/
					addFaces(leaf->getFirstFaceIndex(), leaf->getNumFaceIndices());
				findVisibleSceneNodes(leaf, planeIndices2);
			}
			else
			{
				Bsp::Node* node = static_cast<Bsp::Node*>(_nodeBase);
				enumVisibleBspLeaves(node->getBack(), planeIndices2);
				enumVisibleBspLeaves(node->getFront(), planeIndices2);
			}
		}
	}
Ejemplo n.º 3
0
void PlnrExpWgbendneg::faces(
			DbsPlnr* dbsplnr
			, const ubigint refPlnrMDevice
			, const ubigint refSruAll
			, const ListPlnrMVertex& vtxs
			, const ListPlnrMLineguide& lgs
			, const ListPlnrMArcguide& ags
			, ListPlnrMFace& fces
		) {
	vector<ubigint> strrefs;
	vector<string> fsrefs;
	vector<string> vsrefsstrs;
	vector<string> rtesstrs;
	vector<string> gsrefsstrs;
	vector<string> dirsstrs;

	strrefs.push_back(refSruAll);
	fsrefs.push_back("f0");
	vsrefsstrs.push_back("vsw;vnw;v1; v3");
	rtesstrs.push_back	("agd;lgd;agd;lgd");
	gsrefsstrs.push_back("a1; l0; a0; l1");
	dirsstrs.push_back	("fwd;bwd;bwd;fwd");

	strrefs.push_back(refSruAll);
	fsrefs.push_back("f1");
	vsrefsstrs.push_back("v4; v2; vne;vse");
	rtesstrs.push_back	("agd;lgd;agd;lgd");
	gsrefsstrs.push_back("a3; l0; a2; l1");
	dirsstrs.push_back	("fwd;bwd;bwd;fwd");

	addFaces(dbsplnr, 0, strrefs, fsrefs, vsrefsstrs, rtesstrs, gsrefsstrs, dirsstrs, vtxs, lgs, ags, fces);
};
Ejemplo n.º 4
0
void FontContext::addFont(const FontDescription& _ft, alfons::InputSource _source) {

    // NB: Synchronize for calls from download thread
    std::lock_guard<std::mutex> lock(m_fontMutex);

    for (size_t i = 0; i < s_fontRasterSizes.size(); i++) {
        auto font = m_alfons.getFont(_ft.alias, s_fontRasterSizes[i]);
        font->addFace(m_alfons.addFontFace(_source, s_fontRasterSizes[i]));

        // add fallbacks from default font
        font->addFaces(*m_font[i]);
    }
}
Ejemplo n.º 5
0
void ACIS_Internals::loadSAT(std::string fileName, GModel *gm)
{
  FILE *f = Fopen (fileName.c_str(), "r");
  if (!f){
    return;
  }
  outcome prout = api_restore_entity_list(f,1,entities);
  if (!prout.ok()){
    Msg::Error("Unable to load ACIS FILE %d",fileName.c_str());
    fclose(f);
    return;
  }
  Msg::Info("ACIS FILE %d Loaded",fileName.c_str());

  ENTITY *e;
  entities.init();
  while((e = entities.next())){
    //    printf("an entity\n");
    if (is_VERTEX(e)){
      //      printf("VERTEX FOUND\n");
    }
    if (is_BODY(e)){
      api_split_periodic_faces(e);
      {
	ENTITY_LIST vertex_list;
	outcome prout = api_get_vertices (e,vertex_list);
	addVertices (gm,vertex_list);
	printf("BODY COUNT %d !\n",vertex_list.count());
      }
      {
	ENTITY_LIST edge_list;
	outcome prout = api_get_edges (e,edge_list);
	addEdges (gm,edge_list);
	printf("BODY COUNT %d !\n",edge_list.count());
      }
      {
	ENTITY_LIST face_list;
	outcome prout = api_get_faces(e,face_list);
	addFaces (gm,face_list);
	printf("BODY COUNT %d !\n",face_list.count());
      }
    }
  }
}
Ejemplo n.º 6
0
void carveHole(GRegion *gr, int num, double distance, std::vector<int> &surfaces)
{
  Msg::Info("Carving hole %d from surface %d at distance %g", num, surfaces[0], distance);
  GModel *m = gr->model();

  // add all points from carving surfaces into kdtree
  int numnodes = 0;
  for(unsigned int i = 0; i < surfaces.size(); i++){
    GFace *gf = m->getFaceByTag(surfaces[i]);
    if(!gf){
      Msg::Error("Unknown carving surface %d", surfaces[i]);
      return;
    }
    numnodes += gf->mesh_vertices.size();
  }

  ANNpointArray kdnodes = annAllocPts(numnodes, 3);
  int k = 0;
  for(unsigned int i = 0; i < surfaces.size(); i++){
    GFace *gf = m->getFaceByTag(surfaces[i]);
    for(unsigned int j = 0; j < gf->mesh_vertices.size(); j++){
      kdnodes[k][0] = gf->mesh_vertices[j]->x();
      kdnodes[k][1] = gf->mesh_vertices[j]->y();
      kdnodes[k][2] = gf->mesh_vertices[j]->z();
      k++;
    }
  }
  ANNkd_tree *kdtree = new ANNkd_tree(kdnodes, numnodes, 3);

  // remove the volume elements that are within 'distance' of the
  // carved surface
  carveHole(gr->tetrahedra, distance, kdtree);
  carveHole(gr->hexahedra, distance, kdtree);
  carveHole(gr->prisms, distance, kdtree);
  carveHole(gr->pyramids, distance, kdtree);

  delete kdtree;
  annDeallocPts(kdnodes);

  // TODO: remove any interior elements left inside the carved surface
  // (could shoot a line from each element's barycenter and count
  // intersections o see who's inside)

  // generate discrete boundary mesh of the carved hole
  GFace *gf = m->getFaceByTag(num);
  if(!gf) return;
  std::set<MFace, Less_Face> faces;
  std::list<GFace*> f = gr->faces();
  for(std::list<GFace*>::iterator it = f.begin(); it != f.end(); it++){
    addFaces((*it)->triangles, faces);
    addFaces((*it)->quadrangles, faces);
  }
  addFaces(gr->tetrahedra, faces);
  addFaces(gr->hexahedra, faces);
  addFaces(gr->prisms, faces);
  addFaces(gr->pyramids, faces);

  std::set<MVertex*> verts;
  for(std::set<MFace, Less_Face>::iterator it = faces.begin(); it != faces.end(); it++){
    for(int i = 0; i < it->getNumVertices(); i++){
      it->getVertex(i)->setEntity(gf);
      verts.insert(it->getVertex(i));
    }
    if(it->getNumVertices() == 3)
      gf->triangles.push_back(new MTriangle(it->getVertex(0), it->getVertex(1),
                                            it->getVertex(2)));
    else if(it->getNumVertices() == 4)
      gf->quadrangles.push_back(new MQuadrangle(it->getVertex(0), it->getVertex(1),
                                                it->getVertex(2), it->getVertex(3)));
  }
}
Ejemplo n.º 7
0
std::shared_ptr<alfons::Font> FontContext::getFont(const std::string& _family, const std::string& _style,
                                                   const std::string& _weight, float _size) {

    // Pick the smallest font that does not scale down too much
    float fontSize = s_fontRasterSizes.back();
    size_t sizeIndex = s_fontRasterSizes.size() - 1;

    auto fontSizeItr = std::lower_bound(s_fontRasterSizes.begin(), s_fontRasterSizes.end(), _size);
    if (fontSizeItr != s_fontRasterSizes.end()) {
        fontSize = *fontSizeItr;
        sizeIndex = fontSizeItr - s_fontRasterSizes.begin();
    }

    std::lock_guard<std::mutex> lock(m_fontMutex);

    auto font = m_alfons.getFont(FontDescription::Alias(_family, _style, _weight), fontSize);
    if (font->hasFaces()) { return font; }

    // First, try to load from the system fonts.

    bool useFallbackFont = false;

    auto systemFontHandle = m_platform->systemFont(_family, _weight, _style);

    alfons::InputSource source;

    switch (systemFontHandle.tag) {
        case FontSourceHandle::FontPath:
            source = alfons::InputSource(systemFontHandle.fontPath.path());
            break;
        case FontSourceHandle::FontName:
            source = alfons::InputSource(systemFontHandle.fontName, true);
            break;
        case FontSourceHandle::FontLoader:
        {
            auto& loader = systemFontHandle.fontLoader;
            auto fontData = loader();
            if (fontData.size() > 0) {
                source = alfons::InputSource(loader);
            } else {
                useFallbackFont = true;
            }
            break;
        }
        case FontSourceHandle::None:
        default:
            useFallbackFont = true;
    }

    if (!useFallbackFont) {
        font->addFace(m_alfons.addFontFace(source, fontSize));
        if (m_font[sizeIndex]) {
            font->addFaces(*m_font[sizeIndex]);
        }
    } else {
        LOGD("Loading fallback font for Family: %s, Style: %s, Weight: %s, Size %f",
            _family.c_str(), _style.c_str(), _weight.c_str(), _size);

        // Add fallbacks from default font.
        if (m_font[sizeIndex]) {
            font->addFaces(*m_font[sizeIndex]);
        }
    }

    return font;
}
Ejemplo n.º 8
0
void PlnrExpRtresneg::faces(
			DbsPlnr* dbsplnr
			, const ubigint x1RefPlnrMDesign
			, const ubigint refPlnrMDevice
			, const bool wg2
			, const ubigint refSruAll
			, const ListPlnrMVertex& vtxs
			, const ListPlnrMLineguide& lgs
			, const ListPlnrMArcguide& ags
			, ListPlnrMFace& fces
		) {
	vector<ubigint> strrefs;
	vector<string> fsrefs;
	vector<string> vsrefsstrs;
	vector<string> rtesstrs;
	vector<string> gsrefsstrs;
	vector<string> dirsstrs;

	strrefs.push_back(refSruAll);
	fsrefs.push_back("f0");
	if (wg2) {
		vsrefsstrs.push_back("v7; v25;v17;v2; v3; v14;v22;v8");
		rtesstrs.push_back	("lgd;agd;lgd;lgd;lgd;agd;lgd;lgd");
		gsrefsstrs.push_back("l12;a3; l3; l17;l4; a2; l11;l17");
		dirsstrs.push_back	("bwd;fwd;fwd;fwd;bwd;bwd;fwd;fwd");
	} else {
		vsrefsstrs.push_back("v6; v21;v17;v2; v3; v14;v22;v8");
		rtesstrs.push_back	("lgd;agd;lgd;lgd;lgd;agd;lgd;lgd");
		gsrefsstrs.push_back("l13;a3; l3; l17;l4; a2; l11;l17");
		dirsstrs.push_back	("bwd;fwd;fwd;fwd;bwd;bwd;fwd;fwd");
	};

	strrefs.push_back(refSruAll);
	fsrefs.push_back("f1");
	vsrefsstrs.push_back("v9; v23;v15;v4; v5; v16;v24;v10");
	rtesstrs.push_back	("lgd;agd;lgd;lgd;lgd;agd;lgd;lgd");
	gsrefsstrs.push_back("l9; a1; l6; l17;l7; a0; l8; l17");
	dirsstrs.push_back	("bwd;fwd;fwd;fwd;bwd;bwd;fwd;fwd");

	strrefs.push_back(refSruAll);
	fsrefs.push_back("f2");
	vsrefsstrs.push_back("v9; v10;v40;v32;v5; v4; v31;v39");
	rtesstrs.push_back	("lgd;lgd;agd;lgd;lgd;lgd;agd;lgd");
	gsrefsstrs.push_back("l17;l8; a4; l7; l17;l6; a5; l9");
	dirsstrs.push_back	("bwd;fwd;bwd;bwd;bwd;fwd;fwd;fwd");

	strrefs.push_back(refSruAll);
	fsrefs.push_back("f3");
	if (wg2) {
		vsrefsstrs.push_back("v7; v8; v38;v30;v3; v2; v33;v41");
		rtesstrs.push_back	("lgd;lgd;agd;lgd;lgd;lgd;agd;lgd");
		gsrefsstrs.push_back("l17;l11;a6; l4; l17;l3; a7; l12");
		dirsstrs.push_back	("bwd;fwd;bwd;bwd;bwd;fwd;fwd;fwd");
	} else {
		vsrefsstrs.push_back("v6; v8; v38;v30;v3; v2; v33;v37");
		rtesstrs.push_back	("lgd;lgd;agd;lgd;lgd;lgd;agd;lgd");
		gsrefsstrs.push_back("l17;l11;a6; l4; l17;l3; a7; l13");
		dirsstrs.push_back	("bwd;fwd;bwd;bwd;bwd;fwd;fwd;fwd");
	};

	strrefs.push_back(refSruAll);
	fsrefs.push_back("f4");
	vsrefsstrs.push_back("vwg1nw;v20;v36;vwg1sw");
	rtesstrs.push_back	("lgd;   lgd;lgd;lgd");
	gsrefsstrs.push_back("l16;   l0; l18;l1");
	dirsstrs.push_back	("bwd;   fwd;fwd;bwd");

	strrefs.push_back(refSruAll);
	fsrefs.push_back("f5");
	vsrefsstrs.push_back("v18;v19;vwg1ne;v17");
	rtesstrs.push_back	("lgd;lgd;lgd;   agd");
	gsrefsstrs.push_back("l5; l16;l3;    a3");
	dirsstrs.push_back	("bwd;bwd;fwd;   bwd");

	strrefs.push_back(refSruAll);
	fsrefs.push_back("f6");
	vsrefsstrs.push_back("v34;v33;vwg1se;v35");
	rtesstrs.push_back	("agd;lgd;lgd;   lgd");
	gsrefsstrs.push_back("a7; l3; l18;   l5");
	dirsstrs.push_back	("bwd;fwd;fwd;   bwd");

	if (wg2) {
		strrefs.push_back(refSruAll);
		fsrefs.push_back("f7");
		vsrefsstrs.push_back("vwg2ne;v28;v44;vwg2se");
		rtesstrs.push_back	("lgd;   lgd;lgd;lgd");
		gsrefsstrs.push_back("l16;   l15;l18;l14");
		dirsstrs.push_back	("fwd;   fwd;bwd;bwd");

		strrefs.push_back(refSruAll);
		fsrefs.push_back("f8");
		vsrefsstrs.push_back("v25;vwg2nw;v27;v26");
		rtesstrs.push_back	("lgd;lgd;   lgd;agd");
		gsrefsstrs.push_back("l12;l16;   l10;a3");
		dirsstrs.push_back	("bwd;bwd;   fwd;bwd");

		strrefs.push_back(refSruAll);
		fsrefs.push_back("f9");
		vsrefsstrs.push_back("v41;v42;v43;vwg2sw");
		rtesstrs.push_back	("agd;lgd;lgd;lgd");
		gsrefsstrs.push_back("a7; l10;l18;l12");
		dirsstrs.push_back	("bwd;fwd;fwd;bwd");
	};

	addFaces(dbsplnr, x1RefPlnrMDesign, strrefs, fsrefs, vsrefsstrs, rtesstrs, gsrefsstrs, dirsstrs, vtxs, lgs, ags, fces);
};
Ejemplo n.º 9
0
void PlnrExpCorner::faces(
			DbsPlnr* dbsplnr
			, const ubigint x1RefPlnrMDesign
			, const ubigint refPlnrMDevice
			, const bool sq
			, const ubigint refSruPos
			, const ubigint refSruNeg
			, const ubigint refSruAlnpos
			, const ubigint refSruAlnneg
			, const ubigint refSruSprpos
			, const ubigint refSruSprneg
			, const ListPlnrMVertex& vtxs
			, const ListPlnrMLineguide& lgs
			, ListPlnrMFace& fces
		) {
	ListPlnrMArcguide ags;

	vector<ubigint> srurefs;
	vector<string> fsrefs;
	vector<string> vsrefsstrs;
	vector<string> rtesstrs;
	vector<string> gsrefsstrs;
	vector<string> dirsstrs;

	// -- cross (and square)

	// - positive tone
	srurefs.push_back(refSruPos);
	fsrefs.push_back("f0");
	vsrefsstrs.push_back("v0; v1; v2; v3; v4; v5");
	rtesstrs.push_back	("lgd;lgd;lgd;lgd;lgd;lgd");
	gsrefsstrs.push_back("l13;l20;l12;l15;l7; l14");
	dirsstrs.push_back	("fwd;bwd;bwd;bwd;bwd;fwd");

	if (sq) {
		srurefs.push_back(refSruPos);
		fsrefs.push_back("f3");
		vsrefsstrs.push_back("v32;v34;v35;v37");
		rtesstrs.push_back	("lgd;lgd;lgd;lgd");
		gsrefsstrs.push_back("l3; l27;l2; l25");
		dirsstrs.push_back	("fwd;bwd;bwd;fwd");
	};

	// - negative tone
	if (!sq) {
		srurefs.push_back(refSruNeg);
		fsrefs.push_back("f6");
		vsrefsstrs.push_back("v1; v15;v23;v19;v5; v4; v3; v2");
		rtesstrs.push_back	("lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd");
		gsrefsstrs.push_back("l13;l22;l0; l14;l7; l15;l12;l20");
		dirsstrs.push_back	("fwd;bwd;bwd;fwd;fwd;fwd;fwd;fwd");
	};

	if (sq) {
		srurefs.push_back(refSruNeg);
		fsrefs.push_back("f6");
		vsrefsstrs.push_back("v1; v15;v22;v20;v25;v19;v5; v4; v3; v2");
		rtesstrs.push_back	("lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd");
		gsrefsstrs.push_back("l13;l22;l5; l23;l0; l14;l7; l15;l12;l20");
		dirsstrs.push_back	("fwd;bwd;bwd;bwd;bwd;fwd;fwd;fwd;fwd;fwd");

		srurefs.push_back(refSruNeg);
		fsrefs.push_back("f7");
		vsrefsstrs.push_back("v20;v21;v33;v32;v37;v36;v24;v25");
		rtesstrs.push_back	("lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd");
		gsrefsstrs.push_back("l5; l26;l3; l25;l2; l26;l0; l23");
		dirsstrs.push_back	("fwd;bwd;bwd;bwd;fwd;bwd;bwd;fwd");

		srurefs.push_back(refSruNeg);
		fsrefs.push_back("f8");
		vsrefsstrs.push_back("v21;v22;v23;v24;v36;v35;v34;v33");
		rtesstrs.push_back	("lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd");
		gsrefsstrs.push_back("l5; l22;l0; l26;l2; l27;l3; l26");
		dirsstrs.push_back	("fwd;bwd;bwd;fwd;fwd;fwd;bwd;fwd");
	};

	// -- aligmnent around cross (and square)

	// - positive tone
	srurefs.push_back(refSruAlnpos);
	fsrefs.push_back("f1");
	vsrefsstrs.push_back("v0; v6; v7; v8; v9; v10;v11;v12;v13;v14");
	rtesstrs.push_back	("lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd");
	gsrefsstrs.push_back("l13;l21;l10;l19;l11;l16;l8; l17;l6; l14");
	dirsstrs.push_back	("fwd;bwd;bwd;fwd;bwd;bwd;fwd;bwd;bwd;fwd");

	if (sq) {
		srurefs.push_back(refSruAlnpos);
		fsrefs.push_back("f4");
		vsrefsstrs.push_back("v26;v28;v29;v31");
		rtesstrs.push_back	("lgd;lgd;lgd;lgd");
		gsrefsstrs.push_back("l4; l28;l1; l24");
		dirsstrs.push_back	("fwd;bwd;bwd;fwd");
	};

	// - negative tone
	if (!sq) {
		srurefs.push_back(refSruAlnneg);
		fsrefs.push_back("f9");
		vsrefsstrs.push_back("v6; v15;v23;v19;v14;v13;v12;v11;v10;v9; v8; v7");
		rtesstrs.push_back	("lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd");
		gsrefsstrs.push_back("l13;l22;l0; l14;l6; l17;l8; l16;l11;l19;l10;l21");
		dirsstrs.push_back	("fwd;bwd;bwd;fwd;fwd;fwd;bwd;fwd;fwd;bwd;fwd;fwd");
	};

	if (sq) {
		srurefs.push_back(refSruAlnneg);
		fsrefs.push_back("f9");
		vsrefsstrs.push_back("v6; v15;v22;v20;v25;v19;v14;v13;v12;v11;v10;v9; v8; v7");
		rtesstrs.push_back	("lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd");
		gsrefsstrs.push_back("l13;l22;l5; l23;l0; l14;l6; l17;l8; l16;l11;l19;l10;l21");
		dirsstrs.push_back	("fwd;bwd;bwd;bwd;bwd;fwd;fwd;fwd;bwd;fwd;fwd;bwd;fwd;fwd");

		srurefs.push_back(refSruAlnneg);
		fsrefs.push_back("f10");
		vsrefsstrs.push_back("v20;v21;v27;v26;v31;v30;v24;v25");
		rtesstrs.push_back	("lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd");
		gsrefsstrs.push_back("l5; l26;l4; l24;l1; l26;l0; l23");
		dirsstrs.push_back	("fwd;bwd;bwd;bwd;fwd;bwd;bwd;fwd");

		srurefs.push_back(refSruAlnneg);
		fsrefs.push_back("f11");
		vsrefsstrs.push_back("v21;v22;v23;v24;v30;v29;v28;v27");
		rtesstrs.push_back	("lgd;lgd;lgd;lgd;lgd;lgd;lgd;lgd");
		gsrefsstrs.push_back("l5; l22;l0; l26;l1; l28;l4; l26");
		dirsstrs.push_back	("fwd;bwd;bwd;fwd;fwd;fwd;bwd;fwd");
	};

	// -- spare around cross (and square) & alignment

	// - positive tone
	srurefs.push_back(refSruSprpos);
	fsrefs.push_back("f2");
	vsrefsstrs.push_back("v0; v15;v16;v17;v18;v19");
	rtesstrs.push_back	("lgd;lgd;lgd;lgd;lgd;lgd");
	gsrefsstrs.push_back("l13;l22;l9; l18;l0; l14");
	dirsstrs.push_back	("fwd;bwd;bwd;bwd;bwd;fwd");

	if (sq) {
		srurefs.push_back(refSruSprpos);
		fsrefs.push_back("f5");
		vsrefsstrs.push_back("v20;v22;v23;v25");
		rtesstrs.push_back	("lgd;lgd;lgd;lgd");
		gsrefsstrs.push_back("l5; l22;l0; l23");
		dirsstrs.push_back	("fwd;bwd;bwd;fwd");
	};

	// - negative tone
	if (sq) {
		srurefs.push_back(refSruSprneg);
		fsrefs.push_back("f12");
		vsrefsstrs.push_back("v17;v16;v22;v20;v25;v18");
		rtesstrs.push_back	("lgd;lgd;lgd;lgd;lgd;lgd");
		gsrefsstrs.push_back("l9; l22;l5; l23;l0; l18");
		dirsstrs.push_back	("fwd;bwd;bwd;bwd;bwd;fwd");
	} else {
		srurefs.push_back(refSruSprneg);
		fsrefs.push_back("f12");
		vsrefsstrs.push_back("v17;v16;v23;v18");
		rtesstrs.push_back	("lgd;lgd;lgd;lgd");
		gsrefsstrs.push_back("l9; l22;l0; l18");
		dirsstrs.push_back	("fwd;bwd;bwd;fwd");
	};

	addFaces(dbsplnr, x1RefPlnrMDesign, srurefs, fsrefs, vsrefsstrs, rtesstrs, gsrefsstrs, dirsstrs, vtxs, lgs, ags, fces);
};