Skip to content

Commit 0230331

Browse files
committed
feat(Compress): Add ParseStringDecompress
1 parent 8f67d31 commit 0230331

File tree

5 files changed

+142
-247
lines changed

5 files changed

+142
-247
lines changed

src/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ if(BUILD_ITK_WASM_IO_MODULES)
2929
set(common_link_flags " -s ALLOW_MEMORY_GROWTH=1 -s FORCE_FILESYSTEM=1 -s MODULARIZE=1 -s WASM=1 -lnodefs.js -s EXIT_RUNTIME=0 -s INVOKE_RUN=1 --post-js ${CMAKE_CURRENT_SOURCE_DIR}/emscripten-module/itkJSPost.js")
3030
set(esm_link_flags " -s EXPORT_ES6=1 -s USE_ES6_IMPORT_META=0")
3131

32+
add_subdirectory(io/internal/pipelines/common/CompressStringify)
3233
add_subdirectory(io/internal/pipelines/image/ConvertImage)
3334
add_subdirectory(io/internal/pipelines/image/ReadDICOM)
3435

src/io/internal/pipelines/common/CompressStringify/Base64.h

Lines changed: 0 additions & 234 deletions
This file was deleted.

src/io/internal/pipelines/common/CompressStringify/CMakeLists.txt

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,41 @@ option(ZSTD_BUILD_LZ4 "BUILD_LZ4" OFF)
1616
option(ZSTD_BUILD_LZMA "BUILD_LZMA" OFF)
1717
option(ZSTD_BUILD_ZLIB "BUILD_ZLIB" OFF)
1818
set(zstd_GIT_REPOSITORY "https://github.com/facebook/zstd.git")
19-
# v1.5.0
20-
set(zstd_GIT_TAG fe616643e0f17552025f50b84508ac5b286dd30f)
19+
# v1.5.2
20+
set(zstd_GIT_TAG c9c7be85f49f45a581ec00c309afda5c62ba9ef2)
2121
FetchContent_Declare(
2222
zstd_lib
2323
GIT_REPOSITORY ${zstd_GIT_REPOSITORY}
2424
GIT_TAG ${zstd_GIT_TAG}
2525
)
26-
set(zstd_lib_INCLUDE_DIR "${zstd_lib_SOURCE_DIR}/lib")
2726

28-
FetchContent_MakeAvailable(zstd_lib)
27+
set(cpp_base64_GIT_REPOSITORY "https://github.com/thewtex/cpp-base64.git")
28+
set(cpp_base64_GET_TAG 9144cd53be930b37235ae552a92b5d2aa51e9325)
29+
FetchContent_Declare(
30+
cpp_base64
31+
GIT_REPOSITORY ${cpp_base64_GIT_REPOSITORY}
32+
GIT_TAG ${cpp_base64_GIT_TAG}
33+
)
34+
35+
FetchContent_MakeAvailable(zstd_lib cpp_base64)
36+
set(zstd_lib_INCLUDE_DIR "${zstd_lib_SOURCE_DIR}/lib")
37+
include_directories(${zstd_lib_INCLUDE_DIR})
38+
# message(FATAL_ERROR "${zstd_lib_INCLUDE_DIR}")
2939
add_subdirectory("${zstd_lib_SOURCE_DIR}/build/cmake" "${zstd_lib_BINARY_DIR}")
3040

3141
find_package(ITK REQUIRED COMPONENTS WebAssemblyInterface)
3242
include(${ITK_USE_FILE})
3343

3444
add_executable(CompressStringify CompressStringify.cxx)
3545
target_include_directories(CompressStringify PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${zstd_lib_INCLUDE_DIR})
36-
target_link_libraries(CompressStringify PUBLIC zstd ${ITK_LIBRARIES})
46+
target_link_libraries(CompressStringify PUBLIC libzstd_static cpp-base64 ${ITK_LIBRARIES})
47+
48+
add_executable(ParseStringDecompress ParseStringDecompress.cxx)
49+
target_include_directories(ParseStringDecompress PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${zstd_lib_INCLUDE_DIR})
50+
target_link_libraries(ParseStringDecompress PUBLIC libzstd_static cpp-base64 ${ITK_LIBRARIES})
3751

3852
if (DEFINED WebAssemblyInterface_SOURCE_DIR)
39-
foreach(target CompressStringify CompressStringify.umd)
53+
foreach(target CompressStringify CompressStringify.umd ParseStringDecompress ParseStringDecompress.umd)
4054
itk_module_target_label(${target})
4155
itk_module_target_export(${target})
4256
itk_module_target_install(${target})

src/io/internal/pipelines/common/CompressStringify/CompressStringify.cxx

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*=========================================================================
2-
*
2+
33
* Copyright NumFOCUS
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
2424
#include <iterator>
2525

2626
#include "zstd.h"
27-
#include "Base64.h"
27+
#include "cpp-base64/base64.h"
2828

2929
#include "itkPipeline.h"
3030
#include "itkInputBinaryStream.h"
@@ -68,23 +68,25 @@ int compressStringify(itk::wasm::Pipeline & pipeline, itk::wasm::InputBinaryStre
6868

6969

7070
const size_t compressedBufferSize = ZSTD_compressBound(inputBinary.size());
71-
std::vector<char> compressedBinary(compressedBufferSize);
71+
std::string compressedBinary;
72+
compressedBinary.resize(compressedBufferSize);
7273

7374
const size_t compressedSize = ZSTD_compress(compressedBinary.data(), compressedBufferSize, inputBinary.data(), inputBinary.size(), compressionLevel);
7475
compressedBinary.resize(compressedSize);
7576

76-
std::ostringstream outputText;
77-
tgk::utils::b64::b64_encode(compressedBinary, outputText, compressedSize);
77+
// Do we want/need this?
78+
constexpr bool urlFriendly = false;
79+
auto outputText = base64_encode(compressedBinary, urlFriendly);
7880

7981
outputTextStream.Get() << dataURLPrefix;
80-
outputTextStream.Get() << outputText.str();
82+
outputTextStream.Get() << outputText;
8183

8284
return EXIT_SUCCESS;
8385
}
8486

8587
int main(int argc, char * argv[])
8688
{
87-
itk::wasm::Pipeline pipeline("Given a binary, compress with stringify and optionally base64 encode", argc, argv);
89+
itk::wasm::Pipeline pipeline("Given a binary, compress optionally base64 encode", argc, argv);
8890

8991
itk::wasm::InputBinaryStream inputBinaryStream;
9092
pipeline.add_option("InputBinary", inputBinaryStream, "Input binary");

0 commit comments

Comments
 (0)