media: add small C++ helper describing a picture struct

By using a std::string instead of a C-string, memory management
becomes so much simpler! This class will be used for keeping track
of deleted/added pictures in the undo system.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2020-04-17 16:49:15 +02:00 committed by Dirk Hohndel
parent 6f8cc5aafe
commit fe82cb32b9
4 changed files with 56 additions and 0 deletions

View file

@ -127,6 +127,8 @@ set(SUBSURFACE_CORE_LIB_SRCS
parse.h
picture.c
picture.h
pictureobj.cpp
pictureobj.h
planner.c
planner.h
plannernotes.c

27
core/pictureobj.cpp Normal file
View file

@ -0,0 +1,27 @@
// SPDX-License-Identifier: GPL-2.0
#include "pictureobj.h"
#include "qthelper.h"
PictureObj::PictureObj() : offset({ 0 }), location({ 0 })
{
}
PictureObj::PictureObj(const picture &pic) : filename(pic.filename), offset(pic.offset), location(pic.location)
{
}
picture PictureObj::toCore() const
{
return picture {
strdup(filename.c_str()),
offset,
location
};
}
bool PictureObj::operator<(const PictureObj &p2) const
{
if (offset.seconds != p2.offset.seconds)
return offset.seconds < p2.offset.seconds;
return strcmp(filename.c_str(), p2.filename.c_str()) < 0;
}

25
core/pictureobj.h Normal file
View file

@ -0,0 +1,25 @@
// SPDX-License-Identifier: GPL-2.0
#ifndef PICTUREOBJ_H
#define PICTUREOBJ_H
// A tiny helper class that represents a struct picture of the core
// It does, however, keep the filename as a std::string so that C++ code
// doesn't have do its own memory-management.
#include "core/units.h"
#include "core/picture.h"
#include <string>
struct PictureObj {
std::string filename;
offset_t offset;
location_t location;
PictureObj(); // Initialize to empty picture.
PictureObj(const picture &pic); // Create from core struct picture.
picture toCore() const; // Turn into core structure. Caller responsible for freeing.
bool operator<(const PictureObj &p2) const;
};
#endif // PICTUREOBJ_H

View file

@ -64,6 +64,7 @@ SOURCES += ../../subsurface-mobile-main.cpp \
../../core/parse-xml.c \
../../core/parse.c \
../../core/picture.c \
../../core/pictureobj.cpp \
../../core/import-suunto.c \
../../core/import-shearwater.c \
../../core/import-cobalt.c \
@ -205,6 +206,7 @@ HEADERS += \
../../core/units.h \
../../core/version.h \
../../core/picture.h \
../../core/pictureobj.h \
../../core/planner.h \
../../core/divesite.h \
../../core/checkcloudconnection.h \