# HG changeset patch # User Sebastien Jodogne # Date 1637862842 -3600 # Node ID 089b6c841da11fcef5aad295c0f873321baff912 # Parent 70d2a97ca8cb28ba92df426eca7d70aecf4b574e# Parent c847b0dfd255532e25b8684a1e31b5d0d2538b10 integration mainline->openssl-3.x diff -r 70d2a97ca8cb -r 089b6c841da1 NEWS --- a/NEWS Thu Nov 25 13:12:32 2021 +0100 +++ b/NEWS Thu Nov 25 18:54:02 2021 +0100 @@ -25,7 +25,7 @@ the new storage cache. * New configuration option "ZipLoaderThreads" to configure the number of threads used to read instances from storage when createing a Zip archive/media. - +* Support decoding of black-and-white images (with 1 bit per pixel), notably DICOM SEG Maintenance ----------- diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/DicomFormat/DicomImageInformation.cpp --- a/OrthancFramework/Sources/DicomFormat/DicomImageInformation.cpp Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/DicomFormat/DicomImageInformation.cpp Thu Nov 25 18:54:02 2021 +0100 @@ -124,6 +124,11 @@ bitsStored_ = bitsAllocated_; } + if (bitsStored_ > bitsAllocated_) + { + throw OrthancException(ErrorCode_BadFileFormat); + } + if (!values.ParseUnsignedInteger32(highBit_, DICOM_TAG_HIGH_BIT)) { highBit_ = bitsStored_ - 1; @@ -168,7 +173,8 @@ } if (bitsAllocated_ != 8 && bitsAllocated_ != 16 && - bitsAllocated_ != 24 && bitsAllocated_ != 32) + bitsAllocated_ != 24 && bitsAllocated_ != 32 && + bitsAllocated_ != 1 /* new in Orthanc 1.9.8 */) { throw OrthancException(ErrorCode_IncompatibleImageFormat, "Image not supported: " + boost::lexical_cast(bitsAllocated_) + " bits allocated"); } @@ -186,7 +192,26 @@ throw OrthancException(ErrorCode_IncompatibleImageFormat, "Image not supported: samples per pixel is 0"); } - bytesPerValue_ = bitsAllocated_ / 8; + if (bitsStored_ == 1) + { + // This is the case of DICOM SEG, new in Orthanc 1.9.8 + if (bitsAllocated_ != 1) + { + throw OrthancException(ErrorCode_BadFileFormat); + } + else if (width_ % 8 != 0) + { + throw OrthancException(ErrorCode_BadFileFormat, "Bad number of columns for a black-and-white image"); + } + else + { + bytesPerValue_ = 0; // Arbitrary initialization + } + } + else + { + bytesPerValue_ = bitsAllocated_ / 8; + } isPlanar_ = (planarConfiguration != 0 ? true : false); isSigned_ = (pixelRepresentation != 0 ? true : false); @@ -237,7 +262,16 @@ size_t DicomImageInformation::GetBytesPerValue() const { - return bytesPerValue_; + if (bitsStored_ == 1) + { + throw OrthancException(ErrorCode_BadSequenceOfCalls, + "This call is incompatible with black-and-white images"); + } + else + { + assert(bitsAllocated_ >= 8); + return bytesPerValue_; + } } bool DicomImageInformation::IsSigned() const @@ -315,6 +349,13 @@ format = PixelFormat_Grayscale32; return true; } + + if (GetBitsStored() == 1 && GetChannelCount() == 1 && !IsSigned()) + { + // This is the case of DICOM SEG, new in Orthanc 1.9.8 + format = PixelFormat_Grayscale8; + return true; + } } if (GetBitsStored() == 8 && @@ -332,10 +373,27 @@ size_t DicomImageInformation::GetFrameSize() const { - return (GetHeight() * - GetWidth() * - GetBytesPerValue() * - GetChannelCount()); + if (bitsStored_ == 1) + { + assert(GetWidth() % 8 == 0); + + if (GetChannelCount() == 1) + { + return GetHeight() * GetWidth() / 8; + } + else + { + throw OrthancException(ErrorCode_IncompatibleImageFormat, + "Image not supported (multi-channel black-and-image image)"); + } + } + else + { + return (GetHeight() * + GetWidth() * + GetBytesPerValue() * + GetChannelCount()); + } } diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/DicomFormat/DicomIntegerPixelAccessor.cpp --- a/OrthancFramework/Sources/DicomFormat/DicomIntegerPixelAccessor.cpp Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/DicomFormat/DicomIntegerPixelAccessor.cpp Thu Nov 25 18:54:02 2021 +0100 @@ -88,7 +88,24 @@ * means the order of the pixel values sent shall be R1, G1, B1, * R2, G2, B2, ..., etc. **/ - rowOffset_ = information_.GetWidth() * information_.GetBytesPerValue() * information_.GetChannelCount(); + if (information_.GetBitsStored() == 1) + { + if (information_.GetChannelCount() == 1 && + information_.GetBitsAllocated() == 1) + { + assert(information_.GetWidth() % 8 == 0); // Tested by DicomImageInformation + rowOffset_ = information_.GetWidth() / 8; + } + else + { + throw OrthancException(ErrorCode_IncompatibleImageFormat, + "Image not supported (multi-channel black-and-image image)"); + } + } + else + { + rowOffset_ = information_.GetWidth() * information_.GetBytesPerValue() * information_.GetChannelCount(); + } } } @@ -115,7 +132,7 @@ { for (unsigned int c = 0; c < channels; c++) { - int32_t v = GetValue(x, y); + int32_t v = GetValue(x, y, c); if (v < min) min = v; if (v > max) @@ -133,53 +150,74 @@ assert(x < information_.GetWidth() && y < information_.GetHeight() && channel < information_.GetChannelCount()); + + const uint8_t* pixel = (reinterpret_cast(pixelData_) + + y * rowOffset_ + frame_ * frameOffset_); - const uint8_t* pixel = reinterpret_cast(pixelData_) + - y * rowOffset_ + frame_ * frameOffset_; - - // http://dicom.nema.org/medical/dicom/current/output/html/part03.html#sect_C.7.6.3.1.3 - if (information_.IsPlanar()) + if (information_.GetBitsStored() == 1) { - /** - * Each color plane shall be sent contiguously. For RGB images, - * this means the order of the pixel values sent is R1, R2, R3, - * ..., G1, G2, G3, ..., B1, B2, B3, etc. - **/ - assert(frameOffset_ % information_.GetChannelCount() == 0); - pixel += channel * frameOffset_ / information_.GetChannelCount() + x * information_.GetBytesPerValue(); + // New in Orthanc 1.9.8, notably for DICOM SEG + assert(information_.GetBitsAllocated() == 1 && + information_.GetChannelCount() == 1 && + !information_.IsPlanar()); + + uint8_t b = pixel[x / 8]; + + if (b & (1 << (x % 8))) + { + return 255; + } + else + { + return 0; + } } else { - /** - * The sample values for the first pixel are followed by the - * sample values for the second pixel, etc. For RGB images, this - * means the order of the pixel values sent shall be R1, G1, B1, - * R2, G2, B2, ..., etc. - **/ - pixel += channel * information_.GetBytesPerValue() + x * information_.GetChannelCount() * information_.GetBytesPerValue(); - } + // http://dicom.nema.org/medical/dicom/current/output/html/part03.html#sect_C.7.6.3.1.3 + if (information_.IsPlanar()) + { + /** + * Each color plane shall be sent contiguously. For RGB images, + * this means the order of the pixel values sent is R1, R2, R3, + * ..., G1, G2, G3, ..., B1, B2, B3, etc. + **/ + assert(frameOffset_ % information_.GetChannelCount() == 0); + pixel += channel * frameOffset_ / information_.GetChannelCount() + x * information_.GetBytesPerValue(); + } + else + { + /** + * The sample values for the first pixel are followed by the + * sample values for the second pixel, etc. For RGB images, this + * means the order of the pixel values sent shall be R1, G1, B1, + * R2, G2, B2, ..., etc. + **/ + pixel += channel * information_.GetBytesPerValue() + x * information_.GetChannelCount() * information_.GetBytesPerValue(); + } - uint32_t v; - v = pixel[0]; - if (information_.GetBytesPerValue() >= 2) - v = v + (static_cast(pixel[1]) << 8); - if (information_.GetBytesPerValue() >= 3) - v = v + (static_cast(pixel[2]) << 16); - if (information_.GetBytesPerValue() >= 4) - v = v + (static_cast(pixel[3]) << 24); + uint32_t v; + v = pixel[0]; + if (information_.GetBytesPerValue() >= 2) + v = v + (static_cast(pixel[1]) << 8); + if (information_.GetBytesPerValue() >= 3) + v = v + (static_cast(pixel[2]) << 16); + if (information_.GetBytesPerValue() >= 4) + v = v + (static_cast(pixel[3]) << 24); - v = v >> information_.GetShift(); + v = v >> information_.GetShift(); - if (v & signMask_) - { - // Signed value - // http://en.wikipedia.org/wiki/Two%27s_complement#Subtraction_from_2N - return -static_cast(mask_) + static_cast(v & mask_) - 1; - } - else - { - // Unsigned value - return static_cast(v & mask_); + if (v & signMask_) + { + // Signed value + // http://en.wikipedia.org/wiki/Two%27s_complement#Subtraction_from_2N + return -static_cast(mask_) + static_cast(v & mask_) - 1; + } + else + { + // Unsigned value + return static_cast(v & mask_); + } } } diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/DicomFormat/DicomIntegerPixelAccessor.h --- a/OrthancFramework/Sources/DicomFormat/DicomIntegerPixelAccessor.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/DicomFormat/DicomIntegerPixelAccessor.h Thu Nov 25 18:54:02 2021 +0100 @@ -64,7 +64,9 @@ void GetExtremeValues(int32_t& min, int32_t& max) const; - int32_t GetValue(unsigned int x, unsigned int y, unsigned int channel = 0) const; + int32_t GetValue(unsigned int x, + unsigned int y, + unsigned int channel) const; const void* GetPixelData() const { diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/DicomParsing/Internals/DicomImageDecoder.cpp --- a/OrthancFramework/Sources/DicomParsing/Internals/DicomImageDecoder.cpp Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/DicomParsing/Internals/DicomImageDecoder.cpp Thu Nov 25 18:54:02 2021 +0100 @@ -542,6 +542,7 @@ bool fastVersionSuccess = false; PixelFormat sourceFormat; if (!info.IsPlanar() && + info.GetBitsStored() != 1 && // Black-and-white image, notably DICOM SEG (new in Orthanc 1.9.8) info.ExtractPixelFormat(sourceFormat, false)) { try diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/FileStorage/StorageCache.cpp --- a/OrthancFramework/Sources/FileStorage/StorageCache.cpp Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/FileStorage/StorageCache.cpp Thu Nov 25 18:54:02 2021 +0100 @@ -53,9 +53,16 @@ } } - void GetCacheKey(std::string& key, const std::string& uuid, FileContentType contentType) + bool GetCacheKey(std::string& key, const std::string& uuid, FileContentType contentType) { + if (contentType == FileContentType_Unknown || contentType >= FileContentType_StartUser) + { + return false; + } + key = uuid + ":" + std::string(ToString(contentType)); + + return true; } void StorageCache::SetMaximumSize(size_t size) @@ -73,8 +80,11 @@ } std::string key; - GetCacheKey(key, uuid, contentType); - cache_.Add(key, value); + + if (GetCacheKey(key, uuid, contentType)) + { + cache_.Add(key, value); + } } void StorageCache::Add(const std::string& uuid, @@ -88,15 +98,21 @@ } std::string key; - GetCacheKey(key, uuid, contentType); - cache_.Add(key, buffer, size); + + if (GetCacheKey(key, uuid, contentType)) + { + cache_.Add(key, buffer, size); + } } void StorageCache::Invalidate(const std::string& uuid, FileContentType contentType) { std::string key; - GetCacheKey(key, uuid, contentType); - cache_.Invalidate(key); + + if (GetCacheKey(key, uuid, contentType)) + { + cache_.Invalidate(key); + } } bool StorageCache::Fetch(std::string& value, @@ -109,9 +125,12 @@ } std::string key; - GetCacheKey(key, uuid, contentType); + if (GetCacheKey(key, uuid, contentType)) + { + return cache_.Fetch(value, key); + } - return cache_.Fetch(value, key); + return false; } diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/Connection.cpp --- a/OrthancFramework/Sources/SQLite/Connection.cpp Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/Connection.cpp Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Copyright (c) 2012 The Chromium Authors. All rights reserved. * diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/Connection.h --- a/OrthancFramework/Sources/SQLite/Connection.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/Connection.h Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Copyright (c) 2012 The Chromium Authors. All rights reserved. * diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/FunctionContext.cpp --- a/OrthancFramework/Sources/SQLite/FunctionContext.cpp Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/FunctionContext.cpp Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/FunctionContext.h --- a/OrthancFramework/Sources/SQLite/FunctionContext.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/FunctionContext.h Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/IScalarFunction.h --- a/OrthancFramework/Sources/SQLite/IScalarFunction.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/IScalarFunction.h Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/ITransaction.h --- a/OrthancFramework/Sources/SQLite/ITransaction.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/ITransaction.h Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Copyright (c) 2012 The Chromium Authors. All rights reserved. * diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/NonCopyable.h --- a/OrthancFramework/Sources/SQLite/NonCopyable.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/NonCopyable.h Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/OrthancSQLiteException.h --- a/OrthancFramework/Sources/SQLite/OrthancSQLiteException.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/OrthancSQLiteException.h Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Copyright (c) 2012 The Chromium Authors. All rights reserved. * diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/SQLiteTypes.h --- a/OrthancFramework/Sources/SQLite/SQLiteTypes.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/SQLiteTypes.h Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/Statement.cpp --- a/OrthancFramework/Sources/SQLite/Statement.cpp Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/Statement.cpp Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Copyright (c) 2012 The Chromium Authors. All rights reserved. * diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/Statement.h --- a/OrthancFramework/Sources/SQLite/Statement.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/Statement.h Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Copyright (c) 2012 The Chromium Authors. All rights reserved. * diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/StatementId.cpp --- a/OrthancFramework/Sources/SQLite/StatementId.cpp Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/StatementId.cpp Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Copyright (c) 2012 The Chromium Authors. All rights reserved. * diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/StatementId.h --- a/OrthancFramework/Sources/SQLite/StatementId.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/StatementId.h Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Copyright (c) 2012 The Chromium Authors. All rights reserved. * diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/StatementReference.cpp --- a/OrthancFramework/Sources/SQLite/StatementReference.cpp Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/StatementReference.cpp Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Copyright (c) 2012 The Chromium Authors. All rights reserved. * diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/StatementReference.h --- a/OrthancFramework/Sources/SQLite/StatementReference.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/StatementReference.h Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Copyright (c) 2012 The Chromium Authors. All rights reserved. * diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/Transaction.cpp --- a/OrthancFramework/Sources/SQLite/Transaction.cpp Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/Transaction.cpp Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Copyright (c) 2012 The Chromium Authors. All rights reserved. * diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancFramework/Sources/SQLite/Transaction.h --- a/OrthancFramework/Sources/SQLite/Transaction.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancFramework/Sources/SQLite/Transaction.h Thu Nov 25 18:54:02 2021 +0100 @@ -3,6 +3,7 @@ * * Copyright (C) 2012-2016 Sebastien Jodogne , * Medical Physics Department, CHU of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * Copyright (c) 2012 The Chromium Authors. All rights reserved. * diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancServer/Resources/Samples/CppHelpers/Logging/ILogger.h --- a/OrthancServer/Resources/Samples/CppHelpers/Logging/ILogger.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancServer/Resources/Samples/CppHelpers/Logging/ILogger.h Thu Nov 25 18:54:02 2021 +0100 @@ -1,3 +1,24 @@ +/** + * Orthanc - A Lightweight, RESTful DICOM Store + * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics + * Department, University Hospital of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium + * + * This program is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + **/ + + #pragma once #include diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancServer/Resources/Samples/CppHelpers/Logging/NullLogger.h --- a/OrthancServer/Resources/Samples/CppHelpers/Logging/NullLogger.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancServer/Resources/Samples/CppHelpers/Logging/NullLogger.h Thu Nov 25 18:54:02 2021 +0100 @@ -1,3 +1,24 @@ +/** + * Orthanc - A Lightweight, RESTful DICOM Store + * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics + * Department, University Hospital of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium + * + * This program is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + **/ + + #pragma once #include "ILogger.h" diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancServer/Resources/Samples/CppHelpers/Logging/OrthancLogger.cpp --- a/OrthancServer/Resources/Samples/CppHelpers/Logging/OrthancLogger.cpp Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancServer/Resources/Samples/CppHelpers/Logging/OrthancLogger.cpp Thu Nov 25 18:54:02 2021 +0100 @@ -1,3 +1,24 @@ +/** + * Orthanc - A Lightweight, RESTful DICOM Store + * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics + * Department, University Hospital of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium + * + * This program is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + **/ + + #include "OrthancLogger.h" #include "Logging.h" diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancServer/Resources/Samples/CppHelpers/Logging/OrthancLogger.h --- a/OrthancServer/Resources/Samples/CppHelpers/Logging/OrthancLogger.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancServer/Resources/Samples/CppHelpers/Logging/OrthancLogger.h Thu Nov 25 18:54:02 2021 +0100 @@ -1,3 +1,24 @@ +/** + * Orthanc - A Lightweight, RESTful DICOM Store + * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics + * Department, University Hospital of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium + * + * This program is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + **/ + + #pragma once #include "ILogger.h" diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancServer/Resources/Samples/CppHelpers/Logging/OrthancPluginLogger.cpp --- a/OrthancServer/Resources/Samples/CppHelpers/Logging/OrthancPluginLogger.cpp Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancServer/Resources/Samples/CppHelpers/Logging/OrthancPluginLogger.cpp Thu Nov 25 18:54:02 2021 +0100 @@ -1,3 +1,24 @@ +/** + * Orthanc - A Lightweight, RESTful DICOM Store + * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics + * Department, University Hospital of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium + * + * This program is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + **/ + + #include "OrthancPluginLogger.h" namespace OrthancHelpers diff -r 70d2a97ca8cb -r 089b6c841da1 OrthancServer/Resources/Samples/CppHelpers/Logging/OrthancPluginLogger.h --- a/OrthancServer/Resources/Samples/CppHelpers/Logging/OrthancPluginLogger.h Thu Nov 25 13:12:32 2021 +0100 +++ b/OrthancServer/Resources/Samples/CppHelpers/Logging/OrthancPluginLogger.h Thu Nov 25 18:54:02 2021 +0100 @@ -1,3 +1,24 @@ +/** + * Orthanc - A Lightweight, RESTful DICOM Store + * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics + * Department, University Hospital of Liege, Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium + * + * This program is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + **/ + + #pragma once #include "ILogger.h"