Mercurial > hg > orthanc-stone
changeset 2251:dee4cce1857a
cppcheck
line wrap: on
line diff
--- a/Applications/Resources/RunCppCheck-2.17.1.sh Tue Dec 02 14:30:15 2025 +0100 +++ b/Applications/Resources/RunCppCheck-2.17.1.sh Tue Dec 02 18:43:13 2025 +0100 @@ -12,6 +12,10 @@ cat <<EOF > /tmp/cppcheck-suppressions.txt assertWithSideEffect:../../OrthancStone/Sources/Loaders/OrthancMultiframeVolumeLoader.cpp:341 assertWithSideEffect:../../OrthancStone/Sources/Loaders/OrthancMultiframeVolumeLoader.cpp:342 +constParameterPointer:../../OrthancStone/Sources/Platforms/WebAssembly/WebAssemblyOracle.cpp:59 +constVariableReference:../../OrthancStone/Sources/Scene2D/GrayscaleWindowingSceneTracker.cpp:53 +knownConditionTrueFalse:../../OrthancStone/Sources/Toolbox/ImageGeometry.cpp:184 +unusedStructMember:../../OrthancStone/Sources/Platforms/WebAssembly/WebAssemblyOracle.cpp:293 EOF CPPCHECK_BUILD_DIR=/tmp/cppcheck-build-dir-stone-2.7.1/
--- a/OrthancStone/Sources/Scene2D/CairoCompositor.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/CairoCompositor.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -98,7 +98,7 @@ CairoCompositor::CairoCompositor(unsigned int canvasWidth, unsigned int canvasHeight) { - ResetScene(); + ResetSceneInternal(); canvas_.SetSize(canvasWidth, canvasHeight, false); }
--- a/OrthancStone/Sources/Scene2D/CairoCompositor.h Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/CairoCompositor.h Tue Dec 02 18:43:13 2025 +0100 @@ -50,6 +50,11 @@ virtual Internals::CompositorHelper::ILayerRenderer* Create(const ISceneLayer& layer) ORTHANC_OVERRIDE; + void ResetSceneInternal() + { + helper_.reset(new Internals::CompositorHelper(*this)); + } + public: CairoCompositor(unsigned int canvasWidth, unsigned int canvasHeight); @@ -88,7 +93,7 @@ virtual void ResetScene() ORTHANC_OVERRIDE { - helper_.reset(new Internals::CompositorHelper(*this)); + ResetSceneInternal(); } Orthanc::ImageAccessor* RenderText(size_t fontIndex,
--- a/OrthancStone/Sources/Scene2D/Internals/CairoBaseRenderer.h Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/Internals/CairoBaseRenderer.h Tue Dec 02 18:43:13 2025 +0100 @@ -38,6 +38,11 @@ ICairoContextProvider& target_; std::unique_ptr<ISceneLayer> layer_; + void UpdateInternal(const ISceneLayer& layer) + { + layer_.reset(layer.Clone()); + } + protected: template<typename T> const T& GetLayer() const @@ -55,12 +60,12 @@ const ISceneLayer& layer) : target_(target) { - Update(layer); + UpdateInternal(layer); } virtual void Update(const ISceneLayer& layer) ORTHANC_OVERRIDE { - layer_.reset(layer.Clone()); + UpdateInternal(layer); } }; }
--- a/OrthancStone/Sources/Scene2D/Internals/CairoColorTextureRenderer.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/Internals/CairoColorTextureRenderer.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -33,11 +33,11 @@ const ISceneLayer& layer) : target_(target) { - Update(layer); + UpdateInternal(layer); } - void CairoColorTextureRenderer::Update(const ISceneLayer& layer) + void CairoColorTextureRenderer::UpdateInternal(const ISceneLayer& layer) { const ColorTextureSceneLayer& l = dynamic_cast<const ColorTextureSceneLayer&>(layer);
--- a/OrthancStone/Sources/Scene2D/Internals/CairoColorTextureRenderer.h Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/Internals/CairoColorTextureRenderer.h Tue Dec 02 18:43:13 2025 +0100 @@ -39,12 +39,17 @@ AffineTransform2D textureTransform_; bool isLinearInterpolation_; + void UpdateInternal(const ISceneLayer& layer); + public: CairoColorTextureRenderer(ICairoContextProvider& target, const ISceneLayer& layer); - virtual void Update(const ISceneLayer& layer) ORTHANC_OVERRIDE; - + virtual void Update(const ISceneLayer& layer) ORTHANC_OVERRIDE + { + UpdateInternal(layer); + } + virtual void Render(const AffineTransform2D& transform, unsigned int canvasWidth, unsigned int canvasHeight) ORTHANC_OVERRIDE
--- a/OrthancStone/Sources/Scene2D/Internals/CairoFloatTextureRenderer.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/Internals/CairoFloatTextureRenderer.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -30,7 +30,7 @@ { namespace Internals { - void CairoFloatTextureRenderer::Update(const ISceneLayer& layer) + void CairoFloatTextureRenderer::UpdateInternal(const ISceneLayer& layer) { const FloatTextureSceneLayer& l = dynamic_cast<const FloatTextureSceneLayer&>(layer);
--- a/OrthancStone/Sources/Scene2D/Internals/CairoFloatTextureRenderer.h Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/Internals/CairoFloatTextureRenderer.h Tue Dec 02 18:43:13 2025 +0100 @@ -39,15 +39,20 @@ AffineTransform2D textureTransform_; bool isLinearInterpolation_; + void UpdateInternal(const ISceneLayer& layer); + public: CairoFloatTextureRenderer(ICairoContextProvider& target, const ISceneLayer& layer) : target_(target) { - Update(layer); + UpdateInternal(layer); } - virtual void Update(const ISceneLayer& layer) ORTHANC_OVERRIDE; + virtual void Update(const ISceneLayer& layer) ORTHANC_OVERRIDE + { + UpdateInternal(layer); + } virtual void Render(const AffineTransform2D& transform, unsigned int canvasWidth,
--- a/OrthancStone/Sources/Scene2D/Internals/CairoInfoPanelRenderer.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/Internals/CairoInfoPanelRenderer.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -29,7 +29,7 @@ { namespace Internals { - void CairoInfoPanelRenderer::Update(const ISceneLayer& layer) + void CairoInfoPanelRenderer::UpdateInternal(const ISceneLayer& layer) { const InfoPanelSceneLayer& l = dynamic_cast<const InfoPanelSceneLayer&>(layer);
--- a/OrthancStone/Sources/Scene2D/Internals/CairoInfoPanelRenderer.h Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/Internals/CairoInfoPanelRenderer.h Tue Dec 02 18:43:13 2025 +0100 @@ -40,6 +40,8 @@ bool isLinearInterpolation_; bool applySceneRotation_; + void UpdateInternal(const ISceneLayer& layer); + public: CairoInfoPanelRenderer(ICairoContextProvider& target, const ISceneLayer& layer) : @@ -48,10 +50,13 @@ applySceneRotation_(false) { - Update(layer); + UpdateInternal(layer); } - virtual void Update(const ISceneLayer& layer) ORTHANC_OVERRIDE; + virtual void Update(const ISceneLayer& layer) ORTHANC_OVERRIDE + { + UpdateInternal(layer); + } virtual void Render(const AffineTransform2D& transform, unsigned int canvasWidth,
--- a/OrthancStone/Sources/Scene2D/Internals/CairoLookupTableTextureRenderer.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/Internals/CairoLookupTableTextureRenderer.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -32,7 +32,7 @@ { namespace Internals { - void CairoLookupTableTextureRenderer::Update(const ISceneLayer& layer) + void CairoLookupTableTextureRenderer::UpdateInternal(const ISceneLayer& layer) { const LookupTableTextureSceneLayer& l = dynamic_cast<const LookupTableTextureSceneLayer&>(layer);
--- a/OrthancStone/Sources/Scene2D/Internals/CairoLookupTableTextureRenderer.h Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/Internals/CairoLookupTableTextureRenderer.h Tue Dec 02 18:43:13 2025 +0100 @@ -39,15 +39,20 @@ AffineTransform2D textureTransform_; bool isLinearInterpolation_; + void UpdateInternal(const ISceneLayer& layer); + public: CairoLookupTableTextureRenderer(ICairoContextProvider& target, const ISceneLayer& layer) : target_(target) { - Update(layer); + UpdateInternal(layer); } - virtual void Update(const ISceneLayer& layer) ORTHANC_OVERRIDE; + virtual void Update(const ISceneLayer& layer) ORTHANC_OVERRIDE + { + UpdateInternal(layer); + } virtual void Render(const AffineTransform2D& transform, unsigned int canvasWidth,
--- a/OrthancStone/Sources/Scene2D/Internals/MacroLayerRenderer.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/Internals/MacroLayerRenderer.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -52,7 +52,7 @@ } - void MacroLayerRenderer::Update(const ISceneLayer& layer) + void MacroLayerRenderer::UpdateInternal(const ISceneLayer& layer) { const MacroSceneLayer& macro = dynamic_cast<const MacroSceneLayer&>(layer);
--- a/OrthancStone/Sources/Scene2D/Internals/MacroLayerRenderer.h Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/Internals/MacroLayerRenderer.h Tue Dec 02 18:43:13 2025 +0100 @@ -39,12 +39,14 @@ void Clear(); + void UpdateInternal(const ISceneLayer& layer); + public: MacroLayerRenderer(Internals::CompositorHelper::IRendererFactory& factory, const ISceneLayer& layer) : factory_(factory) { - Update(layer); + UpdateInternal(layer); } virtual ~MacroLayerRenderer() @@ -56,7 +58,10 @@ unsigned int canvasWidth, unsigned int canvasHeight) ORTHANC_OVERRIDE; - virtual void Update(const ISceneLayer& layer) ORTHANC_OVERRIDE; + virtual void Update(const ISceneLayer& layer) ORTHANC_OVERRIDE + { + UpdateInternal(layer); + } }; } }
--- a/OrthancStone/Sources/Scene2D/OpenGLCompositor.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/OpenGLCompositor.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -150,7 +150,7 @@ canvasWidth_(0), canvasHeight_(0) { - ResetScene(); + ResetSceneInternal(); } OpenGLCompositor::~OpenGLCompositor()
--- a/OrthancStone/Sources/Scene2D/OpenGLCompositor.h Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/OpenGLCompositor.h Tue Dec 02 18:43:13 2025 +0100 @@ -53,6 +53,11 @@ virtual Internals::CompositorHelper::ILayerRenderer* Create(const ISceneLayer& layer) ORTHANC_OVERRIDE; + void ResetSceneInternal() + { + helper_.reset(new Internals::CompositorHelper(*this)); + } + public: explicit OpenGLCompositor(OpenGL::IOpenGLContext& context); @@ -62,7 +67,7 @@ virtual void ResetScene() ORTHANC_OVERRIDE { - helper_.reset(new Internals::CompositorHelper(*this)); + ResetSceneInternal(); } void SetFont(size_t index, const GlyphBitmapAlphabet& dict);
--- a/OrthancStone/Sources/Scene2D/ZoomSceneTracker.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2D/ZoomSceneTracker.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -77,12 +77,12 @@ z = MIN_ZOOM + (MAX_ZOOM - MIN_ZOOM) * (dy + 1.0) / 2.0; } - double zoom = pow(2.0, z); - ViewportLocker locker(viewport_); if (locker.IsValid()) { + const double zoom = pow(2.0, z); + locker.GetController().SetSceneToCanvasTransform( AffineTransform2D::Combine( AffineTransform2D::CreateScaling(zoom, zoom),
--- a/OrthancStone/Sources/Scene2DViewport/CreateAngleMeasureTracker.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2DViewport/CreateAngleMeasureTracker.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -36,7 +36,7 @@ { std::unique_ptr<IViewport::ILock> lock(GetViewportLock()); - Scene2D& scene = lock->GetController().GetScene(); + const Scene2D& scene = lock->GetController().GetScene(); point = e.GetMainPosition().Apply(scene.GetCanvasToSceneTransform()); }
--- a/OrthancStone/Sources/Scene2DViewport/EditLineMeasureTracker.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2DViewport/EditLineMeasureTracker.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -38,7 +38,7 @@ { std::unique_ptr<IViewport::ILock> lock(GetViewportLock()); - Scene2D& scene = lock->GetController().GetScene(); + const Scene2D& scene = lock->GetController().GetScene(); scenePos = e.GetMainPosition().Apply(scene.GetCanvasToSceneTransform()); }
--- a/OrthancStone/Sources/Scene2DViewport/MeasureToolsToolbox.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2DViewport/MeasureToolsToolbox.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -297,7 +297,7 @@ for the actual text */ void SetTextLayerOutlineProperties( - Scene2D& scene + const Scene2D& scene , boost::shared_ptr<LayerHolder> layerHolder , const char* text , ScenePoint2D p @@ -330,7 +330,6 @@ TEXT_OUTLINE_COLOR_BLUE); } - ScenePoint2D textAnchor; int offIndex = i - startingLayerIndex; ORTHANC_ASSERT(offIndex >= 0 && offIndex < 5); textLayer->SetPosition( @@ -341,7 +340,7 @@ } #else void SetTextLayerProperties( - Scene2D& scene + const Scene2D& scene , boost::shared_ptr<LayerHolder> layerHolder , const char* text , ScenePoint2D p @@ -352,8 +351,6 @@ { textLayer->SetText(text); textLayer->SetColor(TEXT_COLOR_RED, TEXT_COLOR_GREEN, TEXT_COLOR_BLUE); - - ScenePoint2D textAnchor; textLayer->SetPosition(p.GetX(), p.GetY()); } }
--- a/OrthancStone/Sources/Scene2DViewport/MeasureToolsToolbox.h Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Scene2DViewport/MeasureToolsToolbox.h Tue Dec 02 18:43:13 2025 +0100 @@ -183,14 +183,14 @@ from startingLayerIndex, up to (and not including) startingLayerIndex+5. */ void SetTextLayerOutlineProperties( - Scene2D& scene + const Scene2D& scene , boost::shared_ptr<LayerHolder> layerHolder , const char* text , ScenePoint2D p , int startingLayerIndex); #else void SetTextLayerProperties( - Scene2D& scene + const Scene2D& scene , boost::shared_ptr<LayerHolder> layerHolder , const char* text , ScenePoint2D p
--- a/OrthancStone/Sources/Toolbox/DebugDrawing2D.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Toolbox/DebugDrawing2D.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -23,6 +23,8 @@ #include "DebugDrawing2D.h" +#include <OrthancException.h> + #include <stdio.h> @@ -125,6 +127,11 @@ } FILE* fp = fopen(path.c_str(), "w"); + if (fp == NULL) + { + throw Orthanc::OrthancException(Orthanc::ErrorCode_CannotWriteFile); + } + fprintf(fp, "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"); fprintf(fp, "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n"); fprintf(fp, "<svg width=\"%f\" height=\"%f\" viewBox=\"0 0 %f %f\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", ww, hh, extent_.GetWidth(), extent_.GetHeight());
--- a/OrthancStone/Sources/Toolbox/DicomStructuredReport.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Toolbox/DicomStructuredReport.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -989,7 +989,7 @@ size_t pos = s.find('.'); if (pos != std::string::npos) { - s = s.substr(0, pos); + s.resize(pos); } s = "\021Series Date Time:\022 " + GetMainDicomTags().GetStringValue(Orthanc::DICOM_TAG_SERIES_DATE, "", false) + " at " + s;
--- a/OrthancStone/Sources/Toolbox/ImageGeometry.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Toolbox/ImageGeometry.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -136,7 +136,7 @@ bool HasOffsetX, bool HasOffsetY> static void ApplyAffineTransformToRow(typename Reader::PixelType* p, - Reader& reader, + const Reader& reader, unsigned int x1, unsigned int x2, float positionX,
--- a/OrthancStone/Sources/Volumes/ImageBuffer3D.cpp Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Volumes/ImageBuffer3D.cpp Tue Dec 02 18:43:13 2025 +0100 @@ -163,7 +163,7 @@ uint64_t ImageBuffer3D::GetEstimatedMemorySize() const { - return image_.GetPitch() * image_.GetHeight() * Orthanc::GetBytesPerPixel(format_); + return static_cast<uint64_t>(image_.GetPitch()) * image_.GetHeight() * Orthanc::GetBytesPerPixel(format_); } @@ -309,6 +309,19 @@ } + ImageBuffer3D::SliceWriter::~SliceWriter() + { + try + { + Flush(); + } + catch (Orthanc::OrthancException& e) + { + LOG(ERROR) << "Exception in destructor: " << e.What(); + } + } + + uint8_t ImageBuffer3D::GetVoxelGrayscale8(unsigned int x, unsigned int y, unsigned int z) const
--- a/OrthancStone/Sources/Volumes/ImageBuffer3D.h Tue Dec 02 14:30:15 2025 +0100 +++ b/OrthancStone/Sources/Volumes/ImageBuffer3D.h Tue Dec 02 18:43:13 2025 +0100 @@ -240,10 +240,7 @@ VolumeProjection projection, unsigned int slice); - ~SliceWriter() - { - Flush(); - } + ~SliceWriter(); const Orthanc::ImageAccessor& GetAccessor() const {
