Skip to content

Commit 59be51e

Browse files
authored
wvware images (#442)
1 parent 844cf1c commit 59be51e

14 files changed

Lines changed: 236 additions & 141 deletions

File tree

src/odr/internal/common/file.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,14 @@
1010

1111
namespace odr::internal {
1212

13-
DiskFile::DiskFile(const char *path) : DiskFile{Path(path)} {}
13+
DiskFile::DiskFile(const char *path) : DiskFile{AbsPath(path)} {}
1414

15-
DiskFile::DiskFile(const std::string &path) : DiskFile{Path(path)} {}
15+
DiskFile::DiskFile(const std::string &path) : DiskFile{AbsPath(path)} {}
1616

17-
DiskFile::DiskFile(Path path) {
18-
if (!std::filesystem::is_regular_file(path.path())) {
17+
DiskFile::DiskFile(AbsPath path) : m_path{std::move(path)} {
18+
if (!std::filesystem::is_regular_file(m_path.path())) {
1919
throw FileNotFound();
2020
}
21-
m_path = AbsPath(std::filesystem::absolute(path.path()));
2221
}
2322

2423
FileLocation DiskFile::location() const noexcept { return FileLocation::disk; }

src/odr/internal/common/file.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class DiskFile : public abstract::File {
1717
public:
1818
explicit DiskFile(const char *path);
1919
explicit DiskFile(const std::string &path);
20-
explicit DiskFile(Path path);
20+
explicit DiskFile(AbsPath path);
2121

2222
[[nodiscard]] FileLocation location() const noexcept final;
2323
[[nodiscard]] std::size_t size() const final;

src/odr/internal/common/path.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,10 @@ Path::Iterator Path::Iterator::operator++(int) {
324324
return old;
325325
}
326326

327+
AbsPath AbsPath::current_working_directory() {
328+
return AbsPath(std::filesystem::current_path());
329+
}
330+
327331
AbsPath::AbsPath() noexcept : Path("/") {}
328332

329333
AbsPath::AbsPath(const char *c_string) : Path(c_string) {

src/odr/internal/common/path.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ class Path {
109109

110110
class AbsPath final : public Path {
111111
public:
112+
static AbsPath current_working_directory();
113+
112114
AbsPath() noexcept;
113115
explicit AbsPath(const char *c_string);
114116
explicit AbsPath(const std::string &string);

src/odr/internal/common/temporary_file.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ TemporaryDiskFile::TemporaryDiskFile(const char *path) : DiskFile{path} {}
1313
TemporaryDiskFile::TemporaryDiskFile(const std::string &path)
1414
: DiskFile{path} {}
1515

16-
TemporaryDiskFile::TemporaryDiskFile(const Path &path) : DiskFile{path} {}
16+
TemporaryDiskFile::TemporaryDiskFile(AbsPath path)
17+
: DiskFile{std::move(path)} {}
1718

1819
TemporaryDiskFile::TemporaryDiskFile(const TemporaryDiskFile &) = default;
1920

@@ -31,7 +32,7 @@ TemporaryDiskFile::operator=(TemporaryDiskFile &&) noexcept = default;
3132

3233
const TemporaryDiskFileFactory &TemporaryDiskFileFactory::system_default() {
3334
static TemporaryDiskFileFactory instance(
34-
Path(std::filesystem::temp_directory_path()),
35+
AbsPath(std::filesystem::temp_directory_path()),
3536
default_random_file_name_generator());
3637
return instance;
3738
}
@@ -42,7 +43,7 @@ TemporaryDiskFileFactory::default_random_file_name_generator() {
4243
}
4344

4445
TemporaryDiskFileFactory::TemporaryDiskFileFactory(
45-
Path directory, RandomFileNameGenerator random_file_name_generator)
46+
AbsPath directory, RandomFileNameGenerator random_file_name_generator)
4647
: m_directory{std::move(directory)},
4748
m_random_file_name_generator{std::move(random_file_name_generator)} {}
4849

@@ -53,7 +54,7 @@ TemporaryDiskFileFactory::copy(const abstract::File &file) const {
5354

5455
TemporaryDiskFile TemporaryDiskFileFactory::copy(std::istream &in) const {
5556
std::fstream file;
56-
Path file_path;
57+
AbsPath file_path;
5758

5859
while (true) {
5960
std::string file_name = m_random_file_name_generator();

src/odr/internal/common/temporary_file.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class TemporaryDiskFile final : public DiskFile {
1111
public:
1212
explicit TemporaryDiskFile(const char *path);
1313
explicit TemporaryDiskFile(const std::string &path);
14-
explicit TemporaryDiskFile(const Path &path);
14+
explicit TemporaryDiskFile(AbsPath path);
1515
TemporaryDiskFile(const TemporaryDiskFile &);
1616
TemporaryDiskFile(TemporaryDiskFile &&) noexcept;
1717
~TemporaryDiskFile() override;
@@ -27,14 +27,14 @@ class TemporaryDiskFileFactory final {
2727
static RandomFileNameGenerator default_random_file_name_generator();
2828

2929
explicit TemporaryDiskFileFactory(
30-
Path directory, RandomFileNameGenerator random_file_name_generator =
31-
default_random_file_name_generator());
30+
AbsPath directory, RandomFileNameGenerator random_file_name_generator =
31+
default_random_file_name_generator());
3232

3333
[[nodiscard]] TemporaryDiskFile copy(const abstract::File &file) const;
3434
[[nodiscard]] TemporaryDiskFile copy(std::istream &in) const;
3535

3636
private:
37-
Path m_directory;
37+
AbsPath m_directory;
3838
RandomFileNameGenerator m_random_file_name_generator;
3939
};
4040

src/odr/internal/html/document.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ void front(const Document &document, const WritingState &state) {
4545
}
4646

4747
auto odr_css_file = File(
48-
Path(state.config().resource_path).join(RelPath("odr.css")).string());
48+
AbsPath(state.config().resource_path).join(RelPath("odr.css")).string());
4949
odr::HtmlResource odr_css_resource =
5050
html::HtmlResource::create(HtmlResourceType::css, "text/css", "odr.css",
5151
"odr.css", odr_css_file, true, false, true);
@@ -62,7 +62,7 @@ void front(const Document &document, const WritingState &state) {
6262

6363
if (document.document_type() == DocumentType::spreadsheet) {
6464
auto odr_spreadsheet_css_file =
65-
File(Path(state.config().resource_path)
65+
File(AbsPath(state.config().resource_path)
6666
.join(RelPath("odr_spreadsheet.css"))
6767
.string());
6868
odr::HtmlResource odr_spreadsheet_css_resource = html::HtmlResource::create(
@@ -122,8 +122,8 @@ void back(const Document &document, const WritingState &state) {
122122
out.write_element_end("div");
123123
}
124124

125-
auto odr_js_file =
126-
File(Path(state.config().resource_path).join(RelPath("odr.js")).string());
125+
auto odr_js_file = File(
126+
AbsPath(state.config().resource_path).join(RelPath("odr.js")).string());
127127
odr::HtmlResource odr_js_resource = html::HtmlResource::create(
128128
HtmlResourceType::js, "text/javascript", "odr.js", "odr.js", odr_js_file,
129129
true, false, true);

src/odr/internal/html/pdf2htmlex_wrapper.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
#include <odr/global_params.hpp>
66
#include <odr/html.hpp>
77

8-
#include <odr/internal/html/common.hpp>
98
#include <odr/internal/html/html_service.hpp>
109
#include <odr/internal/html/html_writer.hpp>
1110
#include <odr/internal/pdf_poppler/poppler_pdf_file.hpp>

0 commit comments

Comments
 (0)