diff --git a/Source/Ember/Utils.h b/Source/Ember/Utils.h index 79061d8..b3d5734 100644 --- a/Source/Ember/Utils.h +++ b/Source/Ember/Utils.h @@ -815,6 +815,24 @@ static string Trim(const string& str, char ch = ' ') return ret; } +/// +/// Return a copy of a file path string with the path portion removed. +/// +/// The string to retrieve the path from +/// The path portion of the string +static string GetPath(const string& filename) +{ + string s; + const size_t lastSlash = filename.find_last_of("\\/"); + + if (std::string::npos != lastSlash) + s = filename.substr(0, lastSlash + 1); + else + s = ""; + + return s; +} + /// /// Placeholder for a templated function to query the value of a specified system environment variable /// of a specific type. This function does nothing as the functions for specific types implement the behavior diff --git a/Source/EmberAnimate/EmberAnimate.cpp b/Source/EmberAnimate/EmberAnimate.cpp index d05aa2d..c216715 100644 --- a/Source/EmberAnimate/EmberAnimate.cpp +++ b/Source/EmberAnimate/EmberAnimate.cpp @@ -34,7 +34,7 @@ bool EmberAnimate(EmberOptions& opt) bool appendXml = false; unsigned char* finalImagep; unsigned int i, channels, ftime; - string s, flameName, filename; + string s, flameName, filename, inputPath = GetPath(opt.Input()); ostringstream os; vector finalImage, vecRgb; vector> embers; @@ -44,8 +44,8 @@ bool EmberAnimate(EmberOptions& opt) Ember centerEmber; XmlToEmber parser; EmberToXml emberToXml; - auto_ptr> progress(new RenderProgress()); - auto_ptr> renderer(CreateRenderer(opt.EmberCL() ? OPENCL_RENDERER : CPU_RENDERER, opt.Platform(), opt.Device(), false, 0, emberReport)); + unique_ptr> progress(new RenderProgress()); + unique_ptr> renderer(CreateRenderer(opt.EmberCL() ? OPENCL_RENDERER : CPU_RENDERER, opt.Platform(), opt.Device(), false, 0, emberReport)); vector errorReport = emberReport.ErrorReport(); if (!errorReport.empty()) @@ -277,7 +277,7 @@ bool EmberAnimate(EmberOptions& opt) if (opt.Out().empty()) { os.str(""); - os << opt.Prefix() << setfill('0') << setw(5) << ftime << opt.Suffix() << "." << opt.Format(); + os << inputPath << opt.Prefix() << setfill('0') << setw(5) << ftime << opt.Suffix() << "." << opt.Format(); filename = os.str(); } diff --git a/Source/EmberCommon/JpegUtils.h b/Source/EmberCommon/JpegUtils.h index d342fe0..3af418f 100644 --- a/Source/EmberCommon/JpegUtils.h +++ b/Source/EmberCommon/JpegUtils.h @@ -353,7 +353,7 @@ static bool WriteBmp(const char* filename, unsigned char* image, size_t width, s { bool b = false; size_t newSize; - auto_ptr bgrBuf(ConvertRGBToBMPBuffer(image, width, height, newSize)); + unique_ptr bgrBuf(ConvertRGBToBMPBuffer(image, width, height, newSize)); if (bgrBuf.get()) b = SaveBmp(filename, bgrBuf.get(), width, height, newSize); diff --git a/Source/EmberGenome/EmberGenome.cpp b/Source/EmberGenome/EmberGenome.cpp index 8764cd6..92860d1 100644 --- a/Source/EmberGenome/EmberGenome.cpp +++ b/Source/EmberGenome/EmberGenome.cpp @@ -77,8 +77,8 @@ bool EmberGenome(EmberOptions& opt) EmberToXml emberToXml; VariationList varList; EmberReport emberReport, emberReport2; - auto_ptr> progress(new RenderProgress()); - auto_ptr> renderer(CreateRenderer(opt.EmberCL() ? OPENCL_RENDERER : CPU_RENDERER, opt.Platform(), opt.Device(), false, 0, emberReport)); + unique_ptr> progress(new RenderProgress()); + unique_ptr> renderer(CreateRenderer(opt.EmberCL() ? OPENCL_RENDERER : CPU_RENDERER, opt.Platform(), opt.Device(), false, 0, emberReport)); QTIsaac rand(ISAAC_INT(t.Tic()), ISAAC_INT(t.Tic() * 2), ISAAC_INT(t.Tic() * 3)); vector errorReport = emberReport.ErrorReport(); diff --git a/Source/EmberRender/EmberRender.cpp b/Source/EmberRender/EmberRender.cpp index f717735..1d9a758 100644 --- a/Source/EmberRender/EmberRender.cpp +++ b/Source/EmberRender/EmberRender.cpp @@ -32,6 +32,7 @@ bool EmberRender(EmberOptions& opt) size_t strips; size_t iterCount; string filename; + string inputPath = GetPath(opt.Input()); ostringstream os; vector> embers; vector finalImage, vecRgb; @@ -41,8 +42,8 @@ bool EmberRender(EmberOptions& opt) XmlToEmber parser; EmberToXml emberToXml; vector> randVec; - auto_ptr> progress(new RenderProgress()); - auto_ptr> renderer(CreateRenderer(opt.EmberCL() ? OPENCL_RENDERER : CPU_RENDERER, opt.Platform(), opt.Device(), false, 0, emberReport)); + unique_ptr> progress(new RenderProgress()); + unique_ptr> renderer(CreateRenderer(opt.EmberCL() ? OPENCL_RENDERER : CPU_RENDERER, opt.Platform(), opt.Device(), false, 0, emberReport)); vector errorReport = emberReport.ErrorReport(); if (!errorReport.empty()) @@ -250,13 +251,13 @@ bool EmberRender(EmberOptions& opt) } else if (opt.NameEnable() && !finalEmber.m_Name.empty()) { - filename = opt.Prefix() + finalEmber.m_Name + opt.Suffix() + "." + opt.Format(); + filename = inputPath + opt.Prefix() + finalEmber.m_Name + opt.Suffix() + "." + opt.Format(); } else { ostringstream ssLocal; - ssLocal << opt.Prefix() << setfill('0') << setw(5) << i << opt.Suffix() << "." << opt.Format(); + ssLocal << inputPath << opt.Prefix() << setfill('0') << setw(5) << i << opt.Suffix() << "." << opt.Format(); filename = ssLocal.str(); } diff --git a/Source/EmberTester/EmberTester.cpp b/Source/EmberTester/EmberTester.cpp index d42bded..734c5a4 100644 --- a/Source/EmberTester/EmberTester.cpp +++ b/Source/EmberTester/EmberTester.cpp @@ -139,9 +139,9 @@ void MakeTestAllVarsRegPrePostComboFile(const string& filename) while (index < varList.RegSize()) { Ember ember1; - auto_ptr> regVar (varList.GetVariationCopy(index, VARTYPE_REG)); - auto_ptr> preVar (varList.GetVariationCopy("pre_" + regVar->Name())); - auto_ptr> postVar(varList.GetVariationCopy("post_" + regVar->Name())); + unique_ptr> regVar(varList.GetVariationCopy(index, VARTYPE_REG)); + unique_ptr> preVar(varList.GetVariationCopy("pre_" + regVar->Name())); + unique_ptr> postVar(varList.GetVariationCopy("post_" + regVar->Name())); ember1.m_FinalRasW = 640; ember1.m_FinalRasH = 480; @@ -666,7 +666,7 @@ bool TestVarCopy() { Variation* var = vlf.GetVariation(i); Variation
* destVar = NULL; - auto_ptr> copyVar(var->Copy());//Test Copy(). + unique_ptr> copyVar(var->Copy());//Test Copy(). if (!TestVarEqual(var, copyVar.get())) { @@ -675,7 +675,7 @@ bool TestVarCopy() } var->Copy(destVar);//Test Copy(var*); - auto_ptr> destPtr(destVar);//Just for deletion. + unique_ptr> destPtr(destVar);//Just for deletion. if (!TestVarEqual(var, destPtr.get())) { @@ -1142,13 +1142,13 @@ void TestXformsInOutPoints() while (index < varList.RegSize()) { vector> xforms; - auto_ptr> regVar (varList.GetVariationCopy(index, VARTYPE_REG)); + unique_ptr> regVar(varList.GetVariationCopy(index, VARTYPE_REG)); string s = regVar->OpenCLString() + regVar->OpenCLFuncsString(); if (s.find("MwcNext") == string::npos) { - auto_ptr> preVar (varList.GetVariationCopy("pre_" + regVar->Name())); - auto_ptr> postVar(varList.GetVariationCopy("post_" + regVar->Name())); + unique_ptr> preVar(varList.GetVariationCopy("pre_" + regVar->Name())); + unique_ptr> postVar(varList.GetVariationCopy("post_" + regVar->Name())); Xform xform0(0.25f, rand.Frand01(), rand.Frand11(), 1, rand.Frand11(), rand.Frand11(), rand.Frand11(), rand.Frand11(), rand.Frand11(), rand.Frand11()); Xform xform1(0.25f, rand.Frand01(), rand.Frand11(), 1, rand.Frand11(), rand.Frand11(), rand.Frand11(), rand.Frand11(), rand.Frand11(), rand.Frand11()); @@ -1772,9 +1772,9 @@ int _tmain(int argc, _TCHAR* argv[]) //cout << "sizeof(RendererCL): " << sizeof(RendererCL) << endl; //cout << "sizeof(RendererCL): " << sizeof(RendererCL) << endl; - /*auto_ptr> linV(new LinearVariation()); - auto_ptr> preLinV(new PreLinearVariation()); - auto_ptr> postLinV(new PostLinearVariation()); + /*unique_ptr> linV(new LinearVariation()); + unique_ptr> preLinV(new PreLinearVariation()); + unique_ptr> postLinV(new PostLinearVariation()); cout << linV->BaseName() << endl; cout << preLinV->BaseName() << endl; @@ -1789,7 +1789,7 @@ int _tmain(int argc, _TCHAR* argv[]) //TestGpuVectorRead(); //TestGpuVectorRead(); //return 0; - //auto_ptr> preFarblurV(new PreFarblurVariation()); + //unique_ptr> preFarblurV(new PreFarblurVariation()); //size_t vsize = 1024 * 1024; // //t.Tic(); diff --git a/Source/Fractorium/FinalRenderDialog.cpp b/Source/Fractorium/FinalRenderDialog.cpp index 3e0e59f..22b30d1 100644 --- a/Source/Fractorium/FinalRenderDialog.cpp +++ b/Source/Fractorium/FinalRenderDialog.cpp @@ -670,10 +670,10 @@ bool FractoriumFinalRenderDialog::CreateControllerFromGUI(bool createRenderer) //Create a float or double controller based on the GUI. #ifdef DO_DOUBLE if (Double()) - m_Controller = auto_ptr(new FinalRenderEmberController(this)); + m_Controller = unique_ptr(new FinalRenderEmberController(this)); else #endif - m_Controller = auto_ptr(new FinalRenderEmberController(this)); + m_Controller = unique_ptr(new FinalRenderEmberController(this)); //Restore the ember and ember file. if (m_Controller.get()) diff --git a/Source/Fractorium/FinalRenderDialog.h b/Source/Fractorium/FinalRenderDialog.h index e34de69..8e473cc 100644 --- a/Source/Fractorium/FinalRenderDialog.h +++ b/Source/Fractorium/FinalRenderDialog.h @@ -125,6 +125,6 @@ private: QLineEdit* m_SuffixEdit; FractoriumSettings* m_Settings; Fractorium* m_Fractorium; - auto_ptr m_Controller; + unique_ptr m_Controller; Ui::FinalRenderDialog ui; }; diff --git a/Source/Fractorium/FinalRenderEmberController.cpp b/Source/Fractorium/FinalRenderEmberController.cpp index 13ede86..cb74d4b 100644 --- a/Source/Fractorium/FinalRenderEmberController.cpp +++ b/Source/Fractorium/FinalRenderEmberController.cpp @@ -92,7 +92,7 @@ template FinalRenderEmberController::FinalRenderEmberController(FractoriumFinalRenderDialog* finalRender) : FinalRenderEmberControllerBase(finalRender) { - m_FinalPreviewRenderer = auto_ptr>(new EmberNs::Renderer()); + m_FinalPreviewRenderer = unique_ptr>(new EmberNs::Renderer()); m_FinalPreviewRenderer->Callback(NULL); m_FinalPreviewRenderer->NumChannels(4); @@ -418,7 +418,7 @@ bool FinalRenderEmberController::CreateRenderer(eRendererType renderType, uns m_OutputTexID = 0;//Don't care about tex ID when doing final render. m_Shared = shared; - m_Renderer = auto_ptr(::CreateRenderer(renderType, platform, device, shared, m_OutputTexID, emberReport)); + m_Renderer = unique_ptr(::CreateRenderer(renderType, platform, device, shared, m_OutputTexID, emberReport)); errorReport = emberReport.ErrorReport(); if (!errorReport.empty()) diff --git a/Source/Fractorium/FinalRenderEmberController.h b/Source/Fractorium/FinalRenderEmberController.h index 48b97fc..06dfec2 100644 --- a/Source/Fractorium/FinalRenderEmberController.h +++ b/Source/Fractorium/FinalRenderEmberController.h @@ -135,7 +135,7 @@ protected: Ember m_PreviewEmber; EmberFile m_EmberFile; EmberToXml m_XmlWriter; - auto_ptr> m_FinalPreviewRenderer; + unique_ptr> m_FinalPreviewRenderer; }; template class FinalRenderEmberController; diff --git a/Source/Fractorium/Fractorium.cpp b/Source/Fractorium/Fractorium.cpp index 7907c52..fd86bdf 100644 --- a/Source/Fractorium/Fractorium.cpp +++ b/Source/Fractorium/Fractorium.cpp @@ -84,10 +84,10 @@ Fractorium::Fractorium(QWidget* parent) //of their respective objects. #ifdef DO_DOUBLE if (m_Settings->Double()) - m_Controller = auto_ptr(new FractoriumEmberController(this)); + m_Controller = unique_ptr(new FractoriumEmberController(this)); else #endif - m_Controller = auto_ptr(new FractoriumEmberController(this)); + m_Controller = unique_ptr(new FractoriumEmberController(this)); if (m_Wrapper.CheckOpenCL() && m_Settings->OpenCL() && m_QualitySpin->value() < 30) m_QualitySpin->setValue(30); diff --git a/Source/Fractorium/Fractorium.h b/Source/Fractorium/Fractorium.h index 0b05800..856b956 100644 --- a/Source/Fractorium/Fractorium.h +++ b/Source/Fractorium/Fractorium.h @@ -398,7 +398,7 @@ private: int m_VarSortMode; int m_PreviousPaletteRow; OpenCLWrapper m_Wrapper; - auto_ptr m_Controller; + unique_ptr m_Controller; Ui::FractoriumClass ui; }; diff --git a/Source/Fractorium/FractoriumEmberController.cpp b/Source/Fractorium/FractoriumEmberController.cpp index c5869ec..446f901 100644 --- a/Source/Fractorium/FractoriumEmberController.cpp +++ b/Source/Fractorium/FractoriumEmberController.cpp @@ -69,9 +69,9 @@ FractoriumEmberController::FractoriumEmberController(Fractorium* fractorium) { m_PreviewRun = false; m_PreviewRunning = false; - m_SheepTools = auto_ptr>(new SheepTools("flam3-palettes.xml", new EmberNs::Renderer())); - m_GLController = auto_ptr>(new GLEmberController(fractorium, fractorium->ui.GLDisplay, this)); - m_PreviewRenderer = auto_ptr>(new EmberNs::Renderer()); + m_SheepTools = unique_ptr>(new SheepTools("flam3-palettes.xml", new EmberNs::Renderer())); + m_GLController = unique_ptr>(new GLEmberController(fractorium, fractorium->ui.GLDisplay, this)); + m_PreviewRenderer = unique_ptr>(new EmberNs::Renderer()); SetupVariationTree(); InitPaletteTable("flam3-palettes.xml"); BackgroundChanged(QColor(0, 0, 0));//Default to black. diff --git a/Source/Fractorium/FractoriumEmberController.h b/Source/Fractorium/FractoriumEmberController.h index 140a474..003c50c 100644 --- a/Source/Fractorium/FractoriumEmberController.h +++ b/Source/Fractorium/FractoriumEmberController.h @@ -231,7 +231,7 @@ protected: vector m_FinalImage; vector m_PreviewFinalImage; vector m_ProcessActions; - auto_ptr m_Renderer; + unique_ptr m_Renderer; QTIsaac m_Rand; Fractorium* m_Fractorium; QTimer* m_RenderTimer; @@ -447,9 +447,9 @@ private: Palette m_TempPalette; PaletteList m_PaletteList; VariationList m_VariationList; - auto_ptr> m_SheepTools; - auto_ptr> m_GLController; - auto_ptr> m_PreviewRenderer; + unique_ptr> m_SheepTools; + unique_ptr> m_GLController; + unique_ptr> m_PreviewRenderer; QFuture m_PreviewResult; std::function m_PreviewRenderFunc; }; diff --git a/Source/Fractorium/FractoriumRender.cpp b/Source/Fractorium/FractoriumRender.cpp index ffc147e..a22908e 100644 --- a/Source/Fractorium/FractoriumRender.cpp +++ b/Source/Fractorium/FractoriumRender.cpp @@ -493,7 +493,7 @@ bool FractoriumEmberController::CreateRenderer(eRendererType renderType, unsi DeleteRenderer();//Delete the renderer and refresh the textures. //Before starting, must take care of allocations. gl->Allocate(true);//Forcing a realloc of the texture is necessary on AMD, but not on nVidia. - m_Renderer = auto_ptr(::CreateRenderer(renderType, platform, device, shared, gl->OutputTexID(), emberReport)); + m_Renderer = unique_ptr(::CreateRenderer(renderType, platform, device, shared, gl->OutputTexID(), emberReport)); errorReport = emberReport.ErrorReport(); if (errorReport.empty()) @@ -625,10 +625,10 @@ bool Fractorium::CreateControllerFromOptions() #ifdef DO_DOUBLE if (m_Settings->Double()) - m_Controller = auto_ptr(new FractoriumEmberController(this)); + m_Controller = unique_ptr(new FractoriumEmberController(this)); else #endif - m_Controller = auto_ptr(new FractoriumEmberController(this)); + m_Controller = unique_ptr(new FractoriumEmberController(this)); //Restore the ember and ember file. if (m_Controller.get())