From 69b8aaea5bbf3764239d6920b38c4098f037ad84 Mon Sep 17 00:00:00 2001 From: mfeemster Date: Sat, 18 Oct 2014 14:07:07 -0700 Subject: [PATCH] Replace all instances of auto_ptr with unique_ptr. Make EmberRender and EmberAnimate place their output renders in the same folder of the input parameter file. Previously it was just placing them in the same folder as the executable, which is wrong. --- Source/Ember/Utils.h | 18 ++++++++++++++ Source/EmberAnimate/EmberAnimate.cpp | 8 +++---- Source/EmberCommon/JpegUtils.h | 2 +- Source/EmberGenome/EmberGenome.cpp | 4 ++-- Source/EmberRender/EmberRender.cpp | 9 +++---- Source/EmberTester/EmberTester.cpp | 24 +++++++++---------- Source/Fractorium/FinalRenderDialog.cpp | 4 ++-- Source/Fractorium/FinalRenderDialog.h | 2 +- .../Fractorium/FinalRenderEmberController.cpp | 4 ++-- .../Fractorium/FinalRenderEmberController.h | 2 +- Source/Fractorium/Fractorium.cpp | 4 ++-- Source/Fractorium/Fractorium.h | 2 +- .../Fractorium/FractoriumEmberController.cpp | 6 ++--- Source/Fractorium/FractoriumEmberController.h | 8 +++---- Source/Fractorium/FractoriumRender.cpp | 6 ++--- 15 files changed, 61 insertions(+), 42 deletions(-) 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())