Skip to content
Commits on Source (8)
......@@ -86,6 +86,7 @@ if (MSP_INCLUDE_DIRS)
# These are optional. Include only if present:
FIND_MSP_LIBRARY(MSPsupportdata DUMMY_ARG)
FIND_MSP_LIBRARY(MSPHardCopyService DUMMY_ARG)
FIND_MSP_LIBRARY(MSPmiisd DUMMY_ARG)
if( LIBS_OK )
set(MSP_FOUND "YES")
......
......@@ -32,9 +32,12 @@
find_path(OPENCV_INCLUDE_DIR opencv/cv.hpp PATHS ${OPENCV_HOME}/include)
macro(FIND_OPENCV_LIBRARY MYLIBRARY MYLIBRARYNAME)
# Force first look in OPENCV_HOME, then use CMAKE paths if not found
find_library( ${MYLIBRARY}
NAMES "${MYLIBRARYNAME}${OPENCV_RELEASE_POSTFIX}"
PATHS ${OPENCV_HOME}/lib ${OPENCV_HOME}/share/OpenCV/3rdparty/lib )
PATHS ${OPENCV_HOME}/lib ${OPENCV_HOME}/share/OpenCV/3rdparty/lib
NO_DEFAULT_PATHS)
find_library( ${MYLIBRARY} NAMES "${MYLIBRARYNAME}${OPENCV_RELEASE_POSTFIX}")
endmacro(FIND_OPENCV_LIBRARY MYLIBRARY MYLIBRARYNAME)
# Required
......
......@@ -23,6 +23,7 @@ FIND_PATH(OPENJPEG_INCLUDE_DIR openjpeg.h
openjpeg
openjpeg-1.5
openjpeg-2.1
openjpeg-2.3
DOC "Location of OpenJPEG Headers"
)
FIND_LIBRARY(MINIZIP_LIBRARY NAMES ${MINIZIP_NAMES} )
......
ossim (2.4.0-1) unstable; urgency=medium
* Team upload.
* Move from experimental to unstable.
-- Bas Couwenberg <sebastic@debian.org> Wed, 30 May 2018 16:08:12 +0200
ossim (2.4.0-1~exp1) experimental; urgency=medium
* Team upload.
* New upstream release.
* Drop GCC 8 patch, included upstream.
-- Bas Couwenberg <sebastic@debian.org> Wed, 30 May 2018 07:03:08 +0200
ossim (2.3.2-2) unstable; urgency=medium
* Team upload.
......
spelling-errors.patch
0001-The-bitmask-was-calling-pixel-flipper-directly.-I-th.patch
//---
// File: ossimFileInfoInterface.h
//
// License: MIT
//
// Description: Class ossimFileInfoInterface.
//
// Interface class for file info things. Written for stream code from url,
// e.g. AWS ossim::S3IStream.
//
//---
// $Id$
#ifndef ossimFileInfoInterface_HEADER
#define ossimFileInfoInterface_HEADER 1
#include <ossim/base/ossimConstants.h>
/** @class ossimFileInfoInterface */
class ossimFileInfoInterface
{
public:
/** @brief virtual destructor. */
virtual ~ossimFileInfoInterface(){}
/**
* @brief Pure virtual file size method. Derived classed must implement.
* @return File size in bytes.
*/
virtual ossim_int64 getFileSize() const = 0;
};
#endif /* #ifndef ossimFileInfoInterface_HEADER */
......@@ -8,6 +8,7 @@
#define ossimRefPtr_HEADER
#include <ossim/base/ossimConstants.h>
#include <stddef.h>
#include <cstddef>
template<class T> class ossimRefPtr
{
......@@ -100,20 +101,20 @@ template<typename _Tp1, typename _Tp2> inline bool
operator==(const ossimRefPtr<_Tp1>& __a, const ossimRefPtr<_Tp2>& __b) noexcept
{ return __a.get() == __b.get(); }
template<typename _Tp> inline bool operator==(const ossimRefPtr<_Tp>& __a, nullptr_t) noexcept
template<typename _Tp> inline bool operator==(const ossimRefPtr<_Tp>& __a, std::nullptr_t) noexcept
{ return !__a; }
template<typename _Tp> inline bool operator==(nullptr_t, const ossimRefPtr<_Tp>& __a) noexcept
template<typename _Tp> inline bool operator==(std::nullptr_t, const ossimRefPtr<_Tp>& __a) noexcept
{ return !__a; }
template<typename _Tp1, typename _Tp2> inline bool
operator!=(const ossimRefPtr<_Tp1>& __a, const ossimRefPtr<_Tp2>& __b) noexcept
{ return __a.get() != __b.get(); }
template<typename _Tp> inline bool operator!=(const ossimRefPtr<_Tp>& __a, nullptr_t) noexcept
template<typename _Tp> inline bool operator!=(const ossimRefPtr<_Tp>& __a, std::nullptr_t) noexcept
{ return (bool)__a; }
template<typename _Tp> inline bool operator!=(nullptr_t, const ossimRefPtr<_Tp>& __a) noexcept
template<typename _Tp> inline bool operator!=(std::nullptr_t, const ossimRefPtr<_Tp>& __a) noexcept
{ return (bool)__a; }
......
......@@ -16,6 +16,7 @@
#include <ossim/base/ossimIpt.h>
#include <ossim/base/ossimOutputSource.h>
#include <ossim/imaging/ossimPixelFlipper.h>
#include <ossim/imaging/ossimMemoryImageSource.h>
#include <vector>
class ossimFilename;
......@@ -123,6 +124,7 @@ protected:
ossimIpt computeImageSize(ossim_uint32 rlevel, ossimImageData* tile) const;
ossimRefPtr<ossimPixelFlipper> m_flipper;
ossimRefPtr<ossimMemoryImageSource> m_memoryImage;
vector<ossim_uint8 *> m_buffers;
vector<ossimIpt> m_bufferSizes;
ossim_uint32 m_startingResLevel;
......
......@@ -206,13 +206,16 @@ public:
virtual void setProperty(ossimRefPtr<ossimProperty> property);
virtual void getPropertyNames(std::vector<ossimString>& propertyNames)const;
//! This object can be used outside of an image chain for offline processing of existing tile.
template <class T> void flipPixels(T dummy, ossimImageData* inpuTile, ossim_uint32 resLevel);
protected:
/** destructor */
virtual ~ossimPixelFlipper();
template <class T> void clipTile(T dummy,
//! This object can be used outside of an image chain for offline processing of existing tile.
template <class T>
void flipPixels(T dummy, ossimImageData *inpuTile, ossim_uint32 resLevel);
template <class T>
void clipTile(T dummy,
ossimImageData *inpuTile,
ossim_uint32 resLevel);
......
......@@ -10,6 +10,7 @@
#include <ossim/ossimConfig.h> /* to pick up platform defines */
#include <ossim/base/ossimFilename.h>
#include <ossim/base/ossimFileInfoInterface.h>
#include <ossim/base/ossimCommon.h>
#include <ossim/base/ossimConstants.h>
#include <ossim/base/ossimDirectory.h>
......@@ -1041,31 +1042,45 @@ ossimFilename ossimFilename::dirCat(const ossimFilename& file) const
ossim_int64 ossimFilename::fileSize() const
{
struct stat sbuf;
ossim_int64 size = 0;
#ifndef __BORLANDC__
if (stat(c_str(), &sbuf) == 0)
if ( isUrl() == false )
{
return (ossim_int64)sbuf.st_size;
struct stat sbuf;
if ( stat( this->c_str(), &sbuf ) == 0 )
{
size = (ossim_int64)sbuf.st_size;
}
else
{
ifstream in(c_str());
if(in)
{
in.seekg(SEEK_END);
return (ossim_int64)in.tellg();
in.seekg(0, std::ios_base::end);
size = (ossim_int64)in.tellg();
}
}
#else
ifstream in(c_str());
}
else
{
std::shared_ptr<ossim::istream> in = ossim::StreamFactoryRegistry::instance()->
createIstream( this->string() );
if ( in )
{
in.seekg(SEEK_END);
return (ossim_int64)in.tellg();
ossimFileInfoInterface* intf = dynamic_cast<ossimFileInfoInterface*>( in.get() );
if ( intf )
{
size = intf->getFileSize();
}
#endif
return 0;
else
{
in->seekg(0, std::ios_base::end);
size = (ossim_int64)in->tellg();
}
}
}
return size;
}
bool ossimFilename::createDirectory( bool recurseFlag,
......
......@@ -20,7 +20,7 @@
ossim::StreamFactoryRegistry* ossim::StreamFactoryRegistry::m_instance = 0;
static const ossimString ISTREAM_BUFFER_KW = "ossim.stream.factory.registry.istream.buffer";
static const char* ISTREAM_BUFFER_KW = "ossim.stream.factory.registry.istream.buffer";
static ossimTrace traceDebug("ossimStreamFactoryRegistry:debug");
static std::mutex m_instanceMutex;
ossim::StreamFactoryRegistry::StreamFactoryRegistry()
......
......@@ -27,8 +27,8 @@ const char* ossimBitMaskWriter::BM_STARTING_RLEVEL_KW = "starting_rlevel";
// Constructor accepts handler to the source imagery being used to compute the mask.
//*************************************************************************************************
ossimBitMaskWriter::ossimBitMaskWriter()
:
m_flipper(0),
: m_flipper(0),
m_memoryImage(0),
m_startingResLevel(0)
{
}
......@@ -116,46 +116,11 @@ void ossimBitMaskWriter::generateMask(ossimRefPtr<ossimImageData> tile, ossim_ui
if (!m_flipper.valid())
initializeFlipper();
// The flipper is used to identify null pixels since it has more sophisticated filtering
// than available from the tile object:
switch (tile->getScalarType())
{
case OSSIM_UCHAR:
m_flipper->flipPixels(ossim_uint8(0), tile.get(), rLevel);
break;
case OSSIM_UINT16:
case OSSIM_USHORT11:
case OSSIM_USHORT12:
case OSSIM_USHORT13:
case OSSIM_USHORT14:
case OSSIM_USHORT15:
m_flipper->flipPixels(ossim_uint16(0), tile.get(), rLevel);
break;
case OSSIM_SSHORT16:
m_flipper->flipPixels(ossim_sint16(0), tile.get(), rLevel);
break;
case OSSIM_UINT32:
m_flipper->flipPixels(ossim_uint32(0), tile.get(), rLevel);
break;
case OSSIM_SINT32:
m_flipper->flipPixels(ossim_sint32(0), tile.get(), rLevel);
break;
case OSSIM_FLOAT32:
case OSSIM_NORMALIZED_FLOAT:
m_flipper->flipPixels(float(0), tile.get(), rLevel);
break;
case OSSIM_NORMALIZED_DOUBLE:
case OSSIM_FLOAT64:
m_flipper->flipPixels(ossim_float64(0), tile.get(), rLevel);
break;
case OSSIM_SCALAR_UNKNOWN:
default:
ossimNotify(ossimNotifyLevel_WARN) << "ossimBitMaskWriter::generateMask()-- "
"Unsupported scalar type!" << endl;
break;
}
ossimIpt image_size = computeImageSize(rLevel, tile.get());
ossimRefPtr<ossimImageData> flipTile;
m_memoryImage->setImage(tile);
m_flipper->initialize();
flipTile = m_flipper->getTile(tile->getImageRectangle());
ossimIpt image_size = computeImageSize(rLevel, flipTile.get());
ossim_uint32 num_mask_cols = (image_size.x + 7) / 8; // size of mask buffer after compression
ossim_uint32 num_mask_rows = image_size.y;
ossim_uint8 *maskbuf = 0;
......@@ -173,7 +138,7 @@ void ossimBitMaskWriter::generateMask(ossimRefPtr<ossimImageData> tile, ossim_ui
maskbuf = m_buffers[mask_rlevel];
ossim_uint32 mask_index = 0, tile_index = 0, start_bit = 0;
ossimIrect tile_rect (tile->getImageRectangle());
ossimIrect tile_rect(flipTile->getImageRectangle());
ossimIpt ul(tile_rect.ul());
ossimIpt lr(tile_rect.lr());
......@@ -192,8 +157,7 @@ void ossimBitMaskWriter::generateMask(ossimRefPtr<ossimImageData> tile, ossim_ui
for (ossim_uint32 mask_bit = start_bit; mask_bit < 8; ++mask_bit)
{
// Decide whether to mask depending on pixel flipper outputting a NULL pixel.
// if (tile->isNull(tile_index++))
if (tile->isNull(tile_index++))
if (flipTile->isNull(tile_index++))
maskbuf[mask_index] &= MASK_BITS_0[mask_bit];
else
maskbuf[mask_index] |= MASK_BITS_1[mask_bit];
......@@ -238,7 +202,8 @@ void ossimBitMaskWriter::close()
if (!maskFileStream.is_open())
{
ossimNotify(ossimNotifyLevel_WARN) << MODULE << " -- Error encountered trying to create mask file"
"<"<<theOutputName<<"> for writing. Cannot write mask.";
"<"
<< theOutputName << "> for writing. Cannot write mask.";
return;
}
......@@ -300,6 +265,11 @@ void ossimBitMaskWriter::initializeFlipper()
m_flipper->setTargetValue(0);
m_flipper->setReplacementValue(0);
}
if (!m_memoryImage)
{
m_memoryImage = new ossimMemoryImageSource();
m_flipper->connectMyInputTo(m_memoryImage.get());
}
// This method gets called when an input connection is made as well as other times, so keep an
// eye out for valid input connection:
......@@ -469,7 +439,6 @@ bool ossimBitMaskWriter::buildOverviews(ossim_uint32 total_num_rlevels)
((b & 0x20) >> 3) |
((b & 0x08) >> 2) |
((b & 0x02) >> 1));
}
}
......@@ -482,4 +451,3 @@ bool ossimBitMaskWriter::buildOverviews(ossim_uint32 total_num_rlevels)
return true;
}
......@@ -11,7 +11,6 @@
//*************************************************************************
// $Id: ossimPixelFlipper.cpp 21631 2012-09-06 18:10:55Z dburken $
#include <ossim/imaging/ossimPixelFlipper.h>
#include <ossim/base/ossimTrace.h>
#include <ossim/base/ossimNotifyContext.h>
......@@ -42,8 +41,7 @@ static const char OSSIM_ID[] = "$Id: ossimPixelFlipper.cpp 21631 2012-09-06 18:1
#endif
ossimPixelFlipper::ossimPixelFlipper(ossimObject *owner)
:
ossimImageSourceFilter(owner),
: ossimImageSourceFilter(owner),
theTargetValueLo(0.0),
theTargetValueHi(0.0),
theReplacementValue(1.0),
......@@ -68,7 +66,8 @@ ossimPixelFlipper::ossimPixelFlipper(ossimObject* owner)
}
ossimPixelFlipper::~ossimPixelFlipper()
{}
{
}
ossimRefPtr<ossimImageData> ossimPixelFlipper::getTile(
const ossimIrect &tile_rect, ossim_uint32 resLevel)
......@@ -83,9 +82,11 @@ ossimRefPtr<ossimImageData> ossimPixelFlipper::getTile(
ossimRefPtr<ossimImageData> inputTile =
theInputConnection->getTile(tile_rect, resLevel);
if (!inputTile.valid() || !isSourceEnabled()) return inputTile;
if (!inputTile.valid() || !isSourceEnabled())
return inputTile;
if (!inputTile->getBuf()) return inputTile;
if (!inputTile->getBuf())
return inputTile;
// Lock for the length of this method.
std::lock_guard<std::recursive_mutex> scopeLock(theMutex);
......@@ -129,7 +130,7 @@ ossimRefPtr<ossimImageData> ossimPixelFlipper::getTile(
case OSSIM_FLOAT32:
case OSSIM_NORMALIZED_FLOAT:
{
flipPixels(float(0), inputTile.get(), resLevel);
flipPixels(ossim_float32(0), inputTile.get(), resLevel);
break;
}
......@@ -158,7 +159,8 @@ void ossimPixelFlipper::flipPixels(T /* dummy */,
ossimImageData *inputTile,
ossim_uint32 resLevel)
{
if (!inputTile) return;
if (!inputTile)
return;
T targetLo = static_cast<T>(theTargetValueLo);
T targetHi = static_cast<T>(theTargetValueHi);
......@@ -419,7 +421,8 @@ void ossimPixelFlipper::flipPixels(T /* dummy */,
inputTile->validate();
}
template <class T> void ossimPixelFlipper::clipTile(T /* dummy */,
template <class T>
void ossimPixelFlipper::clipTile(T /* dummy */,
ossimImageData *inputTile,
ossim_uint32 resLevel)
{
......@@ -428,7 +431,8 @@ template <class T> void ossimPixelFlipper::clipTile(T /* dummy */,
theClipTileBuffer = 0;
return;
}
if(!inputTile) return;
if (!inputTile)
return;
if (!inputTile->getBuf() ||
(inputTile->getDataObjectStatus() == OSSIM_EMPTY))
{
......@@ -436,7 +440,6 @@ template <class T> void ossimPixelFlipper::clipTile(T /* dummy */,
}
allocateClipTileBuffer(inputTile);
if (theClipTileBuffer.valid())
{
ossimIrect tileRect = inputTile->getImageRectangle();
......@@ -537,7 +540,6 @@ template <class T> void ossimPixelFlipper::clipTile(T /* dummy */,
}
}
void ossimPixelFlipper::allocateClipTileBuffer(ossimRefPtr<ossimImageData> inputImage)
{
if (inputImage.valid())
......@@ -1084,7 +1086,8 @@ ossimRefPtr<ossimProperty> ossimPixelFlipper::getProperty(
void ossimPixelFlipper::setProperty(ossimRefPtr<ossimProperty> property)
{
if (!property) return;
if (!property)
return;
ossimString os = property->valueToString();
......
......@@ -4838,7 +4838,9 @@ void ossimChipperUtil::initializeThumbnailProjection(const ossimIrect& originalR
ossim_float64 thumbSize = thumbRes.toFloat64();
ossim_float64 maxRectDimension =
ossim::max( originalRect.width(), originalRect.height() );
ossim_uint32 tw = originalRect.width();
ossim_uint32 th = originalRect.height();
ossim_float64 scale = 1.0;
if ( maxRectDimension > thumbSize )
{
// Need to adjust scale:
......@@ -4852,7 +4854,7 @@ void ossimChipperUtil::initializeThumbnailProjection(const ossimIrect& originalR
if ( isChipMode() && m_ivt.valid() ) // Chipping in image space.)
{
ossim_float64 scale = thumbSize / maxRectDimension;
scale = thumbSize / maxRectDimension;
if ( m_ivt->getScale().hasNans() )
{
m_ivt->scale( scale, scale );
......@@ -4864,7 +4866,7 @@ void ossimChipperUtil::initializeThumbnailProjection(const ossimIrect& originalR
}
else
{
ossim_float64 scale = maxRectDimension / thumbSize;
scale = maxRectDimension / thumbSize;
//---
// Adjust the projection scale. Note the "true" is to recenter
......@@ -4874,7 +4876,10 @@ void ossimChipperUtil::initializeThumbnailProjection(const ossimIrect& originalR
//---
m_geom->applyScale(ossimDpt(scale, scale), true);
}
tw *= scale;
th *= scale;
if(tw < 1) tw = 1;
if(th < 1) th = 1;
// Must call to reset the ossimImageRenderer's bounding rect for each input.
propagateOutputProjectionToChains();
......@@ -4893,14 +4898,15 @@ void ossimChipperUtil::initializeThumbnailProjection(const ossimIrect& originalR
//---
ossim_int32 ts = thumbSize;
bool pad = padThumbnail();
if ( ( (lr.x - ul.x + 1) > ts ) || pad )
if(pad)
{
lr.x = ul.x + ts - 1;
lr.y = ul.y + ts - 1;
}
if ( ( (lr.y - ul.y + 1) > ts ) || pad )
else // let it vary
{
lr.y = ul.y + ts - 1;
lr.x = ul.x + tw - 1;
lr.y = ul.y + th - 1;
}
adjustedRect = ossimIrect(ul, lr);
......