Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ find_package(argon2 REQUIRED)

include(FetchContent)
FetchContent_Declare(odr.js
URL "https://github.com/opendocument-app/OpenDocument.js/releases/download/v2.0.0-pre2/build.zip"
URL_HASH SHA256=f1cc3285e23231c3ef6323afc9cc3172888c5181ff059a0cc036d9fe13ac09aa
URL "https://github.com/opendocument-app/OpenDocument.js/releases/download/v2.0.0/build.zip"
URL_HASH SHA256=5ccbe1c5bb46d65bc0dccc6c6df6548a571eef5536fcb95f9dcb80add26800b6
)
FetchContent_MakeAvailable(odr.js)

Expand Down
1 change: 1 addition & 0 deletions cli/src/server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ int main(const int argc, char **argv) {
DecodePreference decode_preference;
decode_preference.engine_priority = {
DecoderEngine::poppler, DecoderEngine::wvware, DecoderEngine::odr};
decode_preference.as_file_type = FileType::zip;

DecodedFile decoded_file{input, decode_preference, *logger};

Expand Down
75 changes: 39 additions & 36 deletions src/odr/internal/html/document.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,40 +45,41 @@ void front(const Document &document, const WritingState &state) {
"width=device-width,initial-scale=1.0,user-scalable=yes");
}

auto odr_css_file = File(
AbsPath(state.config().resource_path).join(RelPath("odr.css")).string());
odr::HtmlResource odr_css_resource =
HtmlResource::create(HtmlResourceType::css, "text/css", "odr.css",
"odr.css", odr_css_file, true, false, true);
HtmlResourceLocation odr_css_location =
state.config().resource_locator(odr_css_resource, state.config());
state.resources().emplace_back(std::move(odr_css_resource), odr_css_location);
if (odr_css_location.has_value()) {
out.write_header_style(odr_css_location.value());
auto document_css_file = File(AbsPath(state.config().resource_path)
.join(RelPath("document.css"))
.string());
odr::HtmlResource document_css_resource = HtmlResource::create(
HtmlResourceType::css, "text/css", "document.css", "document.css",
document_css_file, true, false, true);
HtmlResourceLocation document_css_location =
state.config().resource_locator(document_css_resource, state.config());
state.resources().emplace_back(std::move(document_css_resource),
document_css_location);
if (document_css_location.has_value()) {
out.write_header_style(document_css_location.value());
} else {
out.write_header_style_begin();
util::stream::pipe(*odr_css_file.stream(), out.out());
util::stream::pipe(*document_css_file.stream(), out.out());
out.write_header_style_end();
}

if (document.document_type() == DocumentType::spreadsheet) {
auto odr_spreadsheet_css_file =
File(AbsPath(state.config().resource_path)
.join(RelPath("odr_spreadsheet.css"))
.string());
odr::HtmlResource odr_spreadsheet_css_resource = HtmlResource::create(
HtmlResourceType::css, "text/css", "odr_spreadsheet.css",
"odr_spreadsheet.css", odr_spreadsheet_css_file, true, false, true);
HtmlResourceLocation odr_spreadsheet_css_location =
state.config().resource_locator(odr_spreadsheet_css_resource,
auto spreadsheet_css_file = File(AbsPath(state.config().resource_path)
.join(RelPath("spreadsheet.css"))
.string());
odr::HtmlResource spreadsheet_css_resource = HtmlResource::create(
HtmlResourceType::css, "text/css", "spreadsheet.css", "spreadsheet.css",
spreadsheet_css_file, true, false, true);
HtmlResourceLocation spreadsheet_css_location =
state.config().resource_locator(spreadsheet_css_resource,
state.config());
state.resources().emplace_back(std::move(odr_spreadsheet_css_resource),
odr_spreadsheet_css_location);
if (odr_spreadsheet_css_location.has_value()) {
out.write_header_style(odr_spreadsheet_css_location.value());
state.resources().emplace_back(std::move(spreadsheet_css_resource),
spreadsheet_css_location);
if (spreadsheet_css_location.has_value()) {
out.write_header_style(spreadsheet_css_location.value());
} else {
out.write_header_style_begin();
util::stream::pipe(*odr_spreadsheet_css_file.stream(), out.out());
util::stream::pipe(*spreadsheet_css_file.stream(), out.out());
out.write_header_style_end();
}
}
Expand Down Expand Up @@ -124,19 +125,21 @@ void back(const Document &document, const WritingState &state) {
out.write_element_end("div");
}

auto odr_js_file = File(
AbsPath(state.config().resource_path).join(RelPath("odr.js")).string());
odr::HtmlResource odr_js_resource =
HtmlResource::create(HtmlResourceType::js, "text/javascript", "odr.js",
"odr.js", odr_js_file, true, false, true);
HtmlResourceLocation odr_js_location =
state.config().resource_locator(odr_js_resource, state.config());
state.resources().emplace_back(std::move(odr_js_resource), odr_js_location);
if (odr_js_location.has_value()) {
out.write_script(odr_js_location.value());
auto document_js_file = File(AbsPath(state.config().resource_path)
.join(RelPath("document.js"))
.string());
odr::HtmlResource document_js_resource = HtmlResource::create(
HtmlResourceType::js, "text/javascript", "document.js", "document.js",
document_js_file, true, false, true);
HtmlResourceLocation document_js_location =
state.config().resource_locator(document_js_resource, state.config());
state.resources().emplace_back(std::move(document_js_resource),
document_js_location);
if (document_js_location.has_value()) {
out.write_script(document_js_location.value());
} else {
out.write_script_begin();
util::stream::pipe(*odr_js_file.stream(), out.out());
util::stream::pipe(*document_js_file.stream(), out.out());
out.write_script_end();
}

Expand Down
Loading