本文整理汇总了C++中Paths类的典型用法代码示例。如果您正苦于以下问题:C++ Paths类的具体用法?C++ Paths怎么用?C++ Paths使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Paths类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: rbclipper_execute_internal
static VALUE
rbclipper_execute_internal(VALUE self, ClipType cliptype,
VALUE subjfill, VALUE clipfill, VALUE resulttype)
{
if (NIL_P(subjfill)) {
subjfill = ID2SYM(id_even_odd);
}
if (NIL_P(clipfill)) {
clipfill = ID2SYM(id_even_odd);
}
if (NIL_P(resulttype)) {
resulttype = ID2SYM(id_polygons);
}
double inv_multiplier = 1.0 / NUM2LONG(rb_iv_get(self, "@multiplier"));
VALUE r = rb_ary_new();
if (resulttype == ID2SYM(id_polygons)) {
Paths solution;
XCLIPPER(self)->Execute((ClipType) cliptype,
solution,
sym_to_filltype(subjfill),
sym_to_filltype(clipfill));
for(Paths::iterator i = solution.begin(); i != solution.end(); ++i) {
VALUE sub = rb_ary_new();
for(Path::iterator p = i->begin(); p != i->end(); ++p) {
rb_ary_push(sub, rb_ary_new3(2, DBL2NUM(p->X * inv_multiplier), DBL2NUM(p->Y * inv_multiplier)));
}
rb_ary_push(r, sub);
}
}
return r;
}
示例2: CleanPolygons
vector<ofVec3f> ofApp::offsetCell(list<int> & crv, float amt) {
float scaling = 10;
ClipperOffset co;
Path P;
Paths offsetP;
float offset = amt;
for (auto index : crv) {
ofVec3f v = linesMesh.getVertex(index);
P.push_back(IntPoint(v.x*scaling, v.y*scaling));
}
co.AddPath(P, jtRound, etClosedPolygon);
co.Execute(offsetP, -offset*scaling);
vector<ofVec3f> offsetPts;
if (offsetP.size() > 0) {
//visual offset for etching
CleanPolygons(offsetP);
if (doEtchOffset) {
co.Clear();
co.AddPaths(offsetP, jtRound, etClosedPolygon);
co.Execute(offsetP, -etchOffset*scaling);
}
Path & oP = offsetP[0];
for (int i = 0; i < oP.size(); i++) {
ofVec3f pt3D(oP[i].X / scaling, oP[i].Y / scaling);
offsetPts.push_back(pt3D);
}
}
return offsetPts;
}
示例3: readPaths
/** Read contig paths from the specified file.
* @param g the contig adjacency graph
* @param inPath the file of contig paths
* @param[out] pathIDs the path IDs
* @return the paths
*/
static Paths readPaths(Graph& g,
const string& inPath, vector<string>& pathIDs)
{
typedef graph_traits<Graph>::vertex_descriptor V;
assert(pathIDs.empty());
ifstream fin(inPath.c_str());
if (opt::verbose > 0)
cerr << "Reading `" << inPath << "'..." << endl;
if (inPath != "-")
assert_good(fin, inPath);
istream& in = inPath == "-" ? cin : fin;
assert_good(in, inPath);
Paths paths;
string id;
ContigPath path;
while (in >> id >> path) {
if (path.empty()) {
// Remove this contig from the graph.
V u = find_vertex(id, false, g);
clear_vertex(u, g);
remove_vertex(u, g);
} else {
pathIDs.push_back(id);
paths.push_back(path);
}
}
assert(in.eof());
return paths;
}
示例4: rbclipper_offset_polygons
static VALUE
rbclipper_offset_polygons(int argc, VALUE* argv, VALUE self)
{
double multiplier = NUM2DBL(rb_iv_get(self, "@multiplier"));
double inv_multiplier = 1.0 / multiplier;
VALUE polygonsValue, deltaValue, joinTypeValue, endTypeValue;
rb_scan_args(argc, argv, "31", &polygonsValue, &deltaValue, &joinTypeValue, &endTypeValue);
Paths polygons;
for(long i = 0; i != RARRAY_LEN(polygonsValue); i++) {
VALUE sub = rb_ary_entry(polygonsValue, i);
Check_Type(sub, T_ARRAY);
ClipperLib::Path tmp;
ary_to_polygon(sub, &tmp, multiplier);
polygons.push_back(tmp);
}
Paths resultPaths;
XCLIPPEROFFSET(self)->AddPaths(polygons, sym_to_jointype(joinTypeValue), sym_to_endtype(endTypeValue));
XCLIPPEROFFSET(self)->Execute(resultPaths, NUM2DBL(deltaValue) * multiplier);
VALUE r = rb_ary_new();
for(Paths::iterator i = resultPaths.begin(); i != resultPaths.end(); ++i) {
VALUE sub = rb_ary_new();
for(Path::iterator p = i->begin(); p != i->end(); ++p) {
rb_ary_push(sub, rb_ary_new3(2, DBL2NUM(p->X * inv_multiplier), DBL2NUM(p->Y * inv_multiplier)));
}
rb_ary_push(r, sub);
}
return r;
}
示例5: popPathFrom
Paths* popPathFrom(string c) {
Paths* ps = getPathFrom(c);
for(int i=0;i<ps->size();i++) {
this->remove(ps->at(i));
}
return ps;
}
示例6: paths
/** Returns a list of possible paths to the given resource. */
DataManager::Paths DataManager::paths(Path resource) const
{
Paths p;
for (Paths::const_iterator d = dirs.begin(); d != dirs.end(); d++)
p.push_back(*d + resource);
return p;
}
示例7: to_polygons
static bool to_polygons(Paths &polygons, GB_ARRAY array)
{
int count;
CPOLYGON *p;
int i;
if (GB.CheckObject(array))
return true;
count = GB.Array.Count(array);
if (count == 0)
return false;
polygons.clear();
for(i = 0; i < count; i++)
{
p = *(CPOLYGON **)GB.Array.Get(array, i);
if (!p)
continue;
polygons.push_back(*(p->poly));
}
return false;
}
示例8: LoadFromFile
bool LoadFromFile(Paths &ppg, char * filename, double scale= 1,
int xOffset = 0, int yOffset = 0)
{
ppg.clear();
FILE *f = fopen(filename, "r");
if (!f) return false;
int polyCnt, vertCnt;
char junk [80];
double X, Y;
if (fscanf(f, "%d", &polyCnt) == 1 && polyCnt > 0)
{
ppg.resize(polyCnt);
for (int i = 0; i < polyCnt; i++) {
if (fscanf(f, "%d", &vertCnt) != 1 || vertCnt <= 0) break;
ppg[i].resize(vertCnt);
for (int j = 0; j < vertCnt; j++) {
if (fscanf(f, "%lf%*[, ]%lf", &X, &Y) != 2) break;
ppg[i][j].X = Round((X + xOffset) * scale);
ppg[i][j].Y = Round((Y + yOffset) * scale);
fgets(junk, 80, f);
}
}
}
fclose(f);
return true;
}
示例9: clone
Paths* clone() {
Paths* ps = new Paths();
for (int i=0;i<this->size();i++) {
ps->push(paths[i]->clone());
}
return ps;
}
示例10: MountMods
void MountMods(const Paths& paths, const std::vector<CStr>& mods)
{
OsPath modPath = paths.RData()/"mods";
OsPath modUserPath = paths.UserData()/"mods";
for (size_t i = 0; i < mods.size(); ++i)
{
size_t priority = (i+1)*2; // mods are higher priority than regular mountings, which default to priority 0
size_t userFlags = VFS_MOUNT_WATCH|VFS_MOUNT_ARCHIVABLE|VFS_MOUNT_REPLACEABLE;
size_t baseFlags = userFlags|VFS_MOUNT_MUST_EXIST;
OsPath modName(mods[i]);
if (InDevelopmentCopy())
{
// We are running a dev copy, so only mount mods in the user mod path
// if the mod does not exist in the data path.
if (DirectoryExists(modPath / modName/""))
g_VFS->Mount(L"", modPath / modName/"", baseFlags, priority);
else
g_VFS->Mount(L"", modUserPath / modName/"", userFlags, priority);
}
else
{
g_VFS->Mount(L"", modPath / modName/"", baseFlags, priority);
// Ensure that user modified files are loaded, if they are present
g_VFS->Mount(L"", modUserPath / modName/"", userFlags, priority+1);
}
}
}
示例11: getWritePaths
static void getWritePaths(Paths& paths)
{
paths.push_back(PathInfo(SlPaths::GetLobbyWriteDir(), "LobbyWriteDir", true));
paths.push_back(PathInfo(SlPaths::GetCachePath(), "CachePath", true));
paths.push_back(PathInfo(SlPaths::GetExecutableFolder(), "ExecutableFolder", false));
paths.push_back(PathInfo(SlPaths::GetDownloadDir(), "DownloadDir", true));
paths.push_back(PathInfo(SlPaths::GetDataDir(), "Current SpringData:", true));
}
示例12: NewOutline
int SHAPE_POLY_SET::NewOutline ()
{
Path empty_path;
Paths poly;
poly.push_back(empty_path);
m_polys.push_back(poly);
return m_polys.size() - 1;
}
示例13: GetSpringlobbyInfo
//FIXME: merge with basicly duplicate in slpaths.cpp
std::string GetSpringlobbyInfo()
{
static const std::string nl = std::string("\n");
std::string res;
res = getSpringlobbyAgent() + nl;
const bool configwriteable = wxFileName::IsFileWritable(TowxString(SlPaths::GetConfigPath()));
res += stdprintf("SpringLobby config file: %s (%swritable)\n",
SlPaths::GetConfigPath().c_str(),
BtS(configwriteable, "", "not ").c_str());
Paths paths;
getWritePaths(paths);
for (size_t i = 0; i < paths.size(); ++i) {
std::string path = paths[i].m_path;
#if defined(__WIN32__) || defined(_MSC_VER)
path = Utf8ToLocalEncoding(path.c_str());
#endif
res += stdprintf("%s (%s)\n", paths[i].m_desc.c_str(), path.c_str());
const bool wx = wxFileName::IsDirWritable(path);
const bool posix = access(path.c_str(), WRITABLE) == 0;
bool tried = false;
try {
std::ofstream of;
wxString dummy_fn = paths[i].m_path;
if (!wxEndsWithPathSeparator(dummy_fn)) {
dummy_fn += wxFileName::GetPathSeparator();
}
dummy_fn += _T("dummy.txt");
std::string dummyFileString = dummy_fn.ToStdString();
#if defined(__WIN32__) || defined(_MSC_VER)
dummyFileString = Utf8ToLocalEncoding(dummyFileString.c_str());
#endif
of.open(dummyFileString);
if (of.is_open()) {
of << "fhreuohgeiuhguie";
of.flush();
of.close();
tried = wxRemoveFile(dummyFileString);
}
} catch (...) {
}
if (paths[i].m_requireswrite && (!wx || !posix || !tried)) {
wxLogError("%s is not writeable!", path.c_str());
}
res += stdprintf(("\tWX: %s POSIX: %s TRY: %s\n"), BtS(wx).c_str(), BtS(posix).c_str(), BtS(tried).c_str());
}
res += stdprintf("Current unitsync: %s\n", SlPaths::GetUnitSync().c_str());
res += stdprintf("Current spring executable: %s\n", SlPaths::GetSpringBinary().c_str());
res += stdprintf("Portable mode: %s\n", BtS(SlPaths::IsPortableMode()).c_str());
res += stdprintf(("Compiled with wxWidgets %d.%d.%d.%d"), wxMAJOR_VERSION, wxMINOR_VERSION, wxRELEASE_NUMBER, wxSUBRELEASE_NUMBER) + nl;
res += "Started with: \n";
for (int i = 0; i < wxTheApp->argc; ++i)
res += STD_STRING(wxTheApp->argv[i]) + std::string(" ");
return res;
}
示例14: getPathFrom
Paths* getPathFrom(string c) {
Paths* ps = new Paths();
for (int i=0; i<paths.size(); i++) {
if (paths[i]->c1 == c || paths[i]->c2 == c) {
ps->push(paths[i]);
}
}
return ps;
}
示例15: load_available_books
//---------------------------------------------------------------------------------------
void BooksDlg::load_available_books()
{
Paths* pPaths = m_appScope.get_paths();
wxString sPath = pPaths->GetBooksPath();
wxString sPattern = "*.lmb";
wxString sRead = _("Please read the <a-1>Study guide</a-1> for information about \
the best way to use LenMus Phonascus and the books.");
sRead.Replace("<a-1>", "<a href=\"lenmus#study-guide\">'");
sRead.Replace("</a-1>", "'</a>");
wxString sHeader = "<html><body>";
wxString sContent = sHeader +
"<p>" + sRead +
"</p>"
"<h3>" + _("Available books:") + "</h3><ul>";
// wxLogMessage("[BooksDlg::load_available_books] Scanning path <%s>", sPath.wx_str());
wxDir dir(sPath);
if ( !dir.IsOpened() )
{
wxMessageBox( wxString::Format(_("Error when trying to move to folder %s"),
sPath.wx_str() ));
LOMSE_LOG_ERROR(str(boost::format("Error when trying to move to folder %s")
% sPath.wx_str() ));
return;
}
//Scan the books folder and load all books found
wxString filename;
bool fFound = dir.GetFirst(&filename, sPattern, wxDIR_FILES);
while (fFound)
{
if ((filename != "TestingNewExercises.lmb" &&
filename != "L1_Dictation.lmb" &&
filename != "L3_MusicReading.lmb" )
|| m_appScope.are_experimental_features_enabled() )
{
wxFileName oFilename(sPath, filename, wxPATH_NATIVE);
wxString name = get_book_name(oFilename);
wxString link = wxString::Format("book-%s", filename.wx_str());
sContent += "<li><a href=\"lenmus#"
+ link
+ "\">"
+ name
+ "</a></li>";
}
fFound = dir.GetNext(&filename);
}
sContent += "</ul></body></html>";
m_pHtmlWnd->SetPage(sContent);
}