1#ifndef TATOOINE_VTK_LEGACY_H
2#define TATOOINE_VTK_LEGACY_H
28auto read_until(std::istream &stream,
char const terminator_char,
char *buffer)
36auto read_word(std::istream &stream,
char *buffer) -> std::string;
38auto write_binary(std::ostream &stream, std::string
const &str) -> void;
57 return "STRUCTURED_POINTS";
59 return "STRUCTURED_GRID";
61 return "UNSTRUCTURED_GRID";
65 return "RECTILINEAR_GRID";
95 virtual auto on_version(
unsigned short ,
unsigned short )
97 virtual auto on_title(std::string
const &) ->
void {}
102 virtual auto on_points(std::vector<std::array<float, 3>>
const &) ->
void {}
103 virtual auto on_points(std::vector<std::array<double, 3>>
const &) ->
void {}
104 virtual auto on_origin(
double ,
double ,
double ) ->
void {}
105 virtual auto on_spacing(
double ,
double ,
double ) ->
void {}
107 std::size_t ) ->
void {}
116 virtual auto on_cells(std::vector<int>
const &) ->
void {}
119 virtual auto on_lines(std::vector<int>
const &) ->
void {}
125 std::vector<std::array<float, 3>>
const & ,
128 std::string
const & ,
129 std::vector<std::array<double, 3>>
const & ,
reader_data)
132 std::vector<std::array<float, 3>>
const & ,
135 std::string
const & ,
136 std::vector<std::array<double, 3>>
const & ,
reader_data)
139 std::string
const & ,
140 std::vector<std::array<float, 2>>
const & ,
143 std::string
const & ,
144 std::vector<std::array<double, 2>>
const & ,
147 std::vector<std::array<float, 9>>
const & ,
150 std::string
const & ,
151 std::vector<std::array<double, 9>>
const & ,
reader_data)
155 std::string
const & ,
160 std::string
const & ,
168 std::vector<int>
const & ,
170 std::size_t ) ->
void {}
173 std::vector<float>
const & ,
175 std::size_t ) ->
void {}
178 std::vector<double>
const & ,
214 template <
typename Real>
216 template <
typename Real>
231 template <
typename Real>
233 std::string
const &lookup_table,
234 std::size_t
const num_comps) -> void;
235 template <
typename Real>
237 std::string
const &lookup_table,
238 std::size_t
const num_comps) -> void;
241 template <
typename Real, std::
size_t N>
242 auto read_data(std::ifstream &file) -> std::vector<std::array<Real, N>>;
243 template <
typename Real, std::
size_t N>
244 auto read_data_ascii(std::ifstream &file) -> std::vector<std::array<Real, N>>;
245 template <
typename Real, std::
size_t N>
247 -> std::vector<std::array<Real, N>>;
251 template <
typename Real>
253 template <
typename Real>
255 -> std::vector<Real>;
256 template <
typename Real>
258 -> std::vector<Real>;
277 -> std::pair<std::string, std::size_t>;
281 -> std::tuple<std::string, std::size_t, std::size_t, std::string>;
284 template <
typename Real>
286 std::size_t num_tuples) -> std::vector<Real>;
287 template <
typename Real>
289 std::size_t num_tuples) -> std::vector<Real>;
294template <
typename Real>
297 std::vector<std::array<Real, 3>> points;
298 for (std::size_t i = 0; i < n; i++)
300 {{static_cast<Real>(parse<Real>(vtk::read_word(file, buffer))),
301 static_cast<Real>(parse<Real>(vtk::read_word(file, buffer))),
302 static_cast<Real>(parse<Real>(vtk::read_word(file, buffer)))}});
304 for (
auto l : m_listeners)
305 l->on_points(points);
308template <
typename Real>
309auto legacy_file::read_points_binary(std::ifstream &file, std::size_t
const n)
311 std::vector<std::array<Real, 3>> points(n);
313 file.read((
char *)points.data(),
314 static_cast<std::streamsize
>(
sizeof(Real) * 3 * n));
316 for (
auto l : m_listeners)
317 l->on_points(points);
318 consume_trailing_break(file);
323template <
typename Real, std::
size_t n>
324auto legacy_file::read_data(std::ifstream &file)
325 -> std::vector<std::array<Real, n>> {
327 return read_data_ascii<Real, n>(file);
329 return read_data_binary<Real, n>(file);
332template <
typename Real, std::
size_t n>
333auto legacy_file::read_data_ascii(std::ifstream &file)
334 -> std::vector<std::array<Real, n>> {
335 std::vector<std::array<Real, n>> data(m_data_size);
336 for (std::size_t i = 0; i < m_data_size; i++)
337 for (std::size_t j = 0; j < n; j++)
338 data[i][n] = parse<Real>(vtk::read_word(file, buffer));
342template <
typename Real, std::
size_t n>
343auto legacy_file::read_data_binary(std::ifstream &file)
344 -> std::vector<std::array<Real, n>> {
345 auto data = std::vector<std::array<Real, n>>(m_data_size);
346 file.read((
char *)data.data(),
347 static_cast<std::streamsize
>(
sizeof(Real) * m_data_size * n));
348 swap_endianess(
reinterpret_cast<Real *
>(data.data()), n * m_data_size);
349 consume_trailing_break(file);
353template <
typename Real>
354auto legacy_file::read_coordinates(std::ifstream &file, std::size_t n) {
356 return read_coordinates_ascii<Real>(file, n);
359 return read_coordinates_binary<Real>(file, n);
362template <
typename Real>
363auto legacy_file::read_coordinates_ascii(std::ifstream &file,
365 -> std::vector<Real> {
366 std::vector<Real> coordinates(n);
367 for (std::size_t i = 0; i < n; i++)
368 coordinates[i] = parse<Real>(vtk::read_word(file, buffer));
372template <
typename Real>
373auto legacy_file::read_coordinates_binary(std::ifstream &file,
375 -> std::vector<Real> {
376 auto coordinates = std::vector<Real>(n);
377 file.read((
char *)coordinates.data(),
378 static_cast<std::streamsize
>(
sizeof(Real) * n));
380 consume_trailing_break(file);
384template <
typename Real>
385auto legacy_file::read_field_array_binary(std::ifstream &file,
386 std::size_t num_comps,
387 std::size_t num_tuples)
388 -> std::vector<Real> {
389 auto data = std::vector<Real>(num_comps * num_tuples);
390 file.read((
char *)data.data(),
static_cast<std::streamsize
>(
391 sizeof(Real) * num_comps * num_tuples));
395 auto consumer =
char{};
396 file.read(&consumer,
sizeof(
char));
401template <
typename Real>
402auto legacy_file::read_field_array_ascii(std::ifstream &file,
403 std::size_t num_comps,
404 std::size_t num_tuples)
405 -> std::vector<Real> {
406 std::vector<Real> data;
407 data.reserve(num_comps * num_tuples);
408 for (std::size_t i = 0; i < num_comps * num_tuples; i++)
409 data.push_back(parse<Real>(vtk::read_word(file, buffer)));
414template <
typename Real>
415auto legacy_file::read_scalars_ascii(std::ifstream &file,
416 std::string
const &name,
417 std::string
const &lookup_table,
418 std::size_t
const num_comps) ->
void {
419 std::vector<Real> scalars;
420 scalars.reserve(m_data_size * num_comps);
422 for (std::size_t i = 0; i < m_data_size * num_comps; i++) {
423 scalars.push_back(parse<Real>(vtk::read_word(file, buffer)));
425 for (
auto l : m_listeners) {
426 l->on_scalars(name, lookup_table, num_comps, scalars, m_data);
430template <
typename Real>
431auto legacy_file::read_scalars_binary(std::ifstream &file,
432 std::string
const &name,
433 std::string
const &lookup_table,
434 std::size_t
const num_comps) ->
void {
435 if (m_data_size > 0) {
436 auto data = std::vector<Real>(m_data_size * num_comps);
437 file.read((
char *)data.data(),
static_cast<std::streamsize
>(
438 sizeof(Real) * m_data_size * num_comps));
441 consume_trailing_break(file);
442 for (
auto l : m_listeners) {
443 l->on_scalars(name, lookup_table, num_comps, data, m_data);
458 unsigned short major = 2,
unsigned short minor = 0,
459 std::string title =
"");
468 std::vector<std::vector<std::size_t>>
const &indices)
470 template <std::
size_t N>
471 auto write_indices(std::string
const &keyword,
472 std::vector<std::array<std::size_t, N>>
const &indices)
474 template <
typename Real, std::
size_t N>
475 auto write_data(std::string
const &keyword, std::string
const &name,
476 std::vector<std::array<Real, N>>
const &data) -> void;
480 template <
typename Real>
481 auto write_points(std::vector<std::array<Real, 2>>
const &points) -> void;
482 template <
typename Real>
483 auto write_points(std::vector<std::array<Real, 3>>
const &points) -> void;
484 template <
typename Real>
485 auto write_points(std::vector<
vec<Real, 2>>
const &points) -> void;
486 template <
typename Real>
487 auto write_points(std::vector<
vec<Real, 3>>
const &points) -> void;
488 auto write_cells(std::vector<std::vector<std::size_t>>
const &cells) -> void;
493 auto write_lines(std::vector<std::vector<std::size_t>>
const &lines) -> void;
496 template <std::
size_t N>
497 auto write_polygons(std::vector<std::array<std::size_t, N>>
const &polygons)
504 using value_type =
typename std::decay_t<
decltype(coords)>::value_type;
505 auto ss = std::stringstream{};
507 << name <<
" " <<
' ' <<
size(coords) <<
' ' << type_to_str<value_type>()
509 vtk::write_binary(m_file, ss.str());
511 for (
auto const &c : coords) {
513 m_file.write((
char *)(&d),
sizeof(
value_type));
517 write_coordinates(
"X_COORDINATES", coords);
520 write_coordinates(
"Y_COORDINATES", coords);
523 write_coordinates(
"Z_COORDINATES", coords);
527 template <
typename Real>
528 auto write_normals(std::string
const &name,
529 std::vector<std::array<Real, 3>> &normals) -> void;
531 template <
typename Real>
532 auto write_vectors(std::string
const &name,
533 std::vector<std::array<Real, 3>> &vectors) -> void;
535 template <
typename Real>
536 auto write_texture_coordinates(
537 std::string
const &name,
538 std::vector<std::array<Real, 2>> &texture_coordinates) -> void;
540 template <
typename Real>
541 auto write_tensors(std::string
const &name,
542 std::vector<std::array<Real, 9>> &tensors) -> void;
544 template <either_of<
double,
float,
int> Data>
545 auto write_scalars(std::string
const &name, std::vector<Data>
const &data,
546 std::string
const &lookup_table_name =
"default") -> void;
548 template <either_of<
double,
float,
int> Data>
549 auto write_scalars(std::string
const &name,
550 std::vector<std::vector<Data>>
const &data,
551 std::string
const &lookup_table_name =
"default") -> void;
553 template <either_of<
double,
float,
int> Data, std::
size_t N>
555 std::vector<std::array<Data, N>>
const &data,
556 std::string
const &lookup_table_name =
"default") ->
void {
557 std::stringstream ss;
558 ss <<
"\nSCALARS " << name << ' ' << type_to_str<Data>() <<
' ' << N
560 vtk::write_binary(m_file, ss.str());
561 vtk::write_binary(m_file,
"\nLOOKUP_TABLE " + lookup_table_name +
'\n');
562 for (
auto const &arr : data)
563 for (
auto &comp : arr) {
565 m_file.write((
char *)(&comp),
sizeof(Data));
569 template <either_of<
double,
float,
int> Data, std::
size_t N>
572 std::string
const &lookup_table_name =
"default") ->
void {
573 std::stringstream ss;
574 ss <<
"\nSCALARS " << name << ' ' << type_to_str<Data>() <<
' ' << N
576 vtk::write_binary(m_file, ss.str());
577 vtk::write_binary(m_file,
"\nLOOKUP_TABLE " + lookup_table_name +
'\n');
579 for (
auto const &v : data)
580 for (std::size_t i = 0; i < N; ++i) {
582 m_file.write((
char *)(&d),
sizeof(Data));
586 template <either_of<
double,
float,
int> Real, std::
size_t N>
589 std::string
const &lookup_table_name =
"default") ->
void {
590 std::stringstream ss;
591 ss <<
"\nSCALARS " << name << ' ' << type_to_str<Real>() <<
' ' << N
593 vtk::write_binary(m_file, ss.str());
594 vtk::write_binary(m_file,
"\nLOOKUP_TABLE " + lookup_table_name +
'\n');
596 for (
auto const &v : data)
597 for (std::size_t i = 0; i < N; ++i) {
599 m_file.write((
char *)(&d),
sizeof(Real));
604 std::size_t
const dimz) -> void;
606 auto write_origin(
double const orgx,
double const orgy,
double const orgz)
613 unsigned short const minor_version) -> void;
617 m_major_version = major_version;
622 m_minor_version = minor_version;
625 auto type() const -> auto const & {
return m_dataset_type; }
627 auto set_type(std::string
const &type_str) ->
void {
631 auto title() const -> auto const & {
return m_title; }
632 auto set_title(std::string
const &title) ->
void { m_title = title; }
633 auto set_title(std::string &&title) ->
void { m_title = std::move(title); }
636template <
typename Real>
637auto legacy_file_writer::write_points(
638 std::vector<std::array<Real, 2>>
const &points2) ->
void {
639 std::vector<std::array<Real, 3>> points3;
640 points3.reserve(points2.size());
641 for (
auto const &x : points2) {
642 points3.push_back({x[0], x[1], Real(0)});
644 write_points(points3);
647template <
typename Real>
648auto legacy_file_writer::write_points(
649 std::vector<std::array<Real, 3>>
const &points) ->
void {
650 std::stringstream ss;
651 ss <<
"\nPOINTS " << points.size() <<
' ' << type_to_str<Real>() <<
'\n';
652 vtk::write_binary(m_file, ss.str());
653 std::vector<std::array<Real, 3>> points_swapped(points);
656 for (
auto const &p : points_swapped) {
658 m_file.write((
char *)(&c),
sizeof(Real));
663template <
typename Real>
664auto legacy_file_writer::write_points(std::vector<
vec<Real, 2>>
const &points2)
666 std::vector<std::array<Real, 3>> points3;
667 points3.reserve(points2.size());
668 for (
auto const &x : points2) {
669 points3.push_back({x(0), x(1), Real(0)});
671 write_points(points3);
674template <
typename Real>
675auto legacy_file_writer::write_points(std::vector<
vec<Real, 3>>
const &points)
677 std::stringstream ss;
678 ss <<
"\nPOINTS " << points.size() <<
' ' << type_to_str<Real>() <<
'\n';
679 vtk::write_binary(m_file, ss.str());
680 auto points_swapped = points;
683 for (
auto const &p : points_swapped) {
684 for (std::size_t i = 0; i < 3; ++i) {
685 m_file.write((
char *)(&p[i]),
sizeof(Real));
690template <std::
size_t N>
691auto legacy_file_writer::write_indices(
692 std::string
const &keyword,
693 std::vector<std::array<std::size_t, N>>
const &indices) ->
void {
694 std::size_t total_number = 0;
695 for (
auto const &is : indices)
696 total_number += is.size() + 1;
697 vtk::write_binary(m_file,
"\n" + keyword +
" " +
698 std::to_string(indices.size()) +
' ' +
699 std::to_string(total_number) +
'\n');
700 for (
auto const &p : indices) {
701 int size = (int)p.size();
703 m_file.write((
char *)(&
size),
sizeof(
int));
706 m_file.write((
char *)(&i),
sizeof(
int));
711template <
typename Real, std::
size_t N>
712auto legacy_file_writer::write_data(
713 std::string
const &keyword, std::string
const &name,
714 std::vector<std::array<Real, N>>
const &data) ->
void {
715 std::stringstream ss;
716 ss <<
"\n" << keyword << ' ' << name << ' ' << type_to_str<Real>() <<
'\n';
717 vtk::write_binary(m_file, ss.str());
718 for (
auto const &
vec : data)
719 for (
auto comp :
vec) {
721 m_file.write((
char *)(&comp),
sizeof(Real));
725template <std::
size_t N>
726auto legacy_file_writer::write_polygons(
727 std::vector<std::array<std::size_t, N>>
const &polygons) ->
void {
728 write_indices(
"POLYGONS", polygons);
731template <
typename Real>
732auto legacy_file_writer::write_normals(
733 std::string
const &name, std::vector<std::array<Real, 3>> &normals)
735 write_data<3>(
"NORMALS", name, normals);
738template <
typename Real>
739auto legacy_file_writer::write_vectors(
740 std::string
const &name, std::vector<std::array<Real, 3>> &vectors)
742 write_data<3>(
"VECTORS", name, vectors);
745template <
typename Real>
746auto legacy_file_writer::write_texture_coordinates(
747 std::string
const &name,
748 std::vector<std::array<Real, 2>> &texture_coordinates) ->
void {
749 write_data<2>(
"TEXTURE_COORDINATES", name, texture_coordinates);
752template <
typename Real>
753auto legacy_file_writer::write_tensors(
754 std::string
const &name, std::vector<std::array<Real, 9>> &tensors)
756 write_data<9>(
"TENSORS", name, tensors);
759template <either_of<
double,
float,
int> Data>
760auto legacy_file_writer::write_scalars(std::string
const &name,
761 std::vector<Data>
const &data,
762 std::string
const &lookup_table_name)
764 std::stringstream ss;
765 ss <<
"\nSCALARS " << name << ' ' << type_to_str<Data>() <<
" 1\n";
766 vtk::write_binary(m_file, ss.str());
767 vtk::write_binary(m_file,
"\nLOOKUP_TABLE " + lookup_table_name +
'\n');
768 for (
auto comp : data) {
770 m_file.write((
char *)(&comp),
sizeof(Data));
774template <either_of<
double,
float,
int> Data>
775auto legacy_file_writer::write_scalars(
776 std::string
const &name, std::vector<std::vector<Data>>
const &data,
777 std::string
const &lookup_table_name) ->
void {
778 std::stringstream ss;
779 ss <<
"\nSCALARS " << name << ' ' << type_to_str<Data>()
780 << std::to_string(data.front().size()) +
'\n';
781 vtk::write_binary(m_file, ss.str());
782 vtk::write_binary(m_file,
"\nLOOKUP_TABLE " + lookup_table_name +
'\n');
783 for (
auto const &
vec : data)
784 for (
auto comp :
vec) {
786 m_file.write((
char *)(&comp),
sizeof(Data));
Definition: vtk_legacy.h:448
auto set_title(std::string &&title) -> void
Definition: vtk_legacy.h:633
auto write_point_data(std::size_t i) -> void
auto set_title(std::string const &title) -> void
Definition: vtk_legacy.h:632
auto write_z_coordinates(arithmetic_range auto const &coords) -> void
Definition: vtk_legacy.h:522
auto minor_version() const -> auto const &
Definition: vtk_legacy.h:620
auto write_cell_data(std::size_t i) -> void
auto write_lines(std::vector< std::vector< std::size_t > > const &lines) -> void
auto write_spacing(double const spax, double const spay, double const spaz) -> void
auto operator=(legacy_file_writer const &) -> legacy_file_writer &=delete
auto write_indices(std::string const &keyword, std::vector< std::vector< std::size_t > > const &indices) -> void
auto set_major_version(unsigned short const major_version) -> void
Definition: vtk_legacy.h:616
auto title() const -> auto const &
Definition: vtk_legacy.h:631
auto write_coordinates(std::string_view name, arithmetic_range auto const &coords) -> void
Definition: vtk_legacy.h:502
auto write_polygons(std::vector< std::vector< std::size_t > > const &polygons) -> void
auto set_version(unsigned short const major_version, unsigned short const minor_version) -> void
unsigned short m_major_version
Definition: vtk_legacy.h:451
auto type() const -> auto const &
Definition: vtk_legacy.h:625
virtual ~legacy_file_writer()=default
auto set_type(std::string const &type_str) -> void
Definition: vtk_legacy.h:627
dataset_type m_dataset_type
Definition: vtk_legacy.h:453
legacy_file_writer(filesystem::path const &path, dataset_type type, unsigned short major=2, unsigned short minor=0, std::string title="")
auto write_vertices(std::vector< std::vector< std::size_t > > const &vertices) -> void
auto write_origin(double const orgx, double const orgy, double const orgz) -> void
auto write_dimensions(std::size_t const dimx, std::size_t const dimy, std::size_t const dimz) -> void
auto write_scalars(std::string const &name, std::vector< vec< Data, N > > const &data, std::string const &lookup_table_name="default") -> void
Definition: vtk_legacy.h:570
legacy_file_writer(legacy_file_writer const &)=delete
std::ofstream m_file
Definition: vtk_legacy.h:450
unsigned short m_minor_version
Definition: vtk_legacy.h:452
std::string m_title
Definition: vtk_legacy.h:454
auto write_cell_types(std::vector< cell_type > const &cell_types) -> void
auto write_y_coordinates(arithmetic_range auto const &coords) -> void
Definition: vtk_legacy.h:519
auto set_minor_version(unsigned short const minor_version) -> void
Definition: vtk_legacy.h:621
auto write_scalars(std::string const &name, std::vector< std::array< Data, N > > const &data, std::string const &lookup_table_name="default") -> void
Definition: vtk_legacy.h:554
auto set_type(dataset_type const type) -> void
Definition: vtk_legacy.h:626
auto write_scalars(std::string const &name, std::vector< tensor< Real, N > > const &data, std::string const &lookup_table_name="default") -> void
Definition: vtk_legacy.h:587
auto write_triangle_strips(std::vector< std::vector< std::size_t > > const &lines) -> void
auto major_version() const -> auto const &
Definition: vtk_legacy.h:615
auto write_x_coordinates(arithmetic_range auto const &coords) -> void
Definition: vtk_legacy.h:516
auto write_cells(std::vector< std::vector< std::size_t > > const &cells) -> void
auto write_header() -> void
Definition: vtk_legacy.h:184
auto read_cell_types_ascii(std::ifstream &file, std::size_t const n) -> void
auto read_x_coordinates(std::ifstream &file) -> void
auto read_coordinates_header(std::ifstream &file)
auto read_data_binary(std::ifstream &file) -> std::vector< std::array< Real, N > >
Definition: vtk_legacy.h:343
auto read_header() -> void
auto read_field_array_binary(std::ifstream &file, std::size_t num_comps, std::size_t num_tuples) -> std::vector< Real >
Definition: vtk_legacy.h:385
auto read_cell_types(std::ifstream &file) -> void
auto read_scalars(std::ifstream &file) -> void
auto read_spacing(std::ifstream &file) -> void
auto read_field_array_ascii(std::ifstream &file, std::size_t num_comps, std::size_t num_tuples) -> std::vector< Real >
Definition: vtk_legacy.h:402
auto read_lines(std::ifstream &file) -> void
static auto read_indices_ascii(std::ifstream &file, std::size_t const size) -> std::vector< int >
auto read_indices(std::ifstream &file) -> std::vector< int >
auto set_path(filesystem::path &&path) -> void
Definition: vtk_legacy.h:202
auto read_scalars_ascii(std::ifstream &file, std::string const &name, std::string const &lookup_table, std::size_t const num_comps) -> void
Definition: vtk_legacy.h:415
auto read_tensors(std::ifstream &file) -> void
auto read_y_coordinates(std::ifstream &file) -> void
auto read_texture_coordinates(std::ifstream &file) -> void
auto read_field_header(std::ifstream &file) -> std::pair< std::string, std::size_t >
auto read_scalars_header(std::ifstream &file)
filesystem::path m_path
Definition: vtk_legacy.h:187
char buffer[256]
Definition: vtk_legacy.h:192
auto path() const -> auto const &
Definition: vtk_legacy.h:203
format m_format
Definition: vtk_legacy.h:188
auto read_triangle_strips(std::ifstream &file) -> void
auto read_normals(std::ifstream &file) -> void
auto read_field_array_header(std::ifstream &file) -> std::tuple< std::string, std::size_t, std::size_t, std::string >
auto read_points_ascii(std::ifstream &file, std::size_t const n) -> void
Definition: vtk_legacy.h:295
std::vector< legacy_file_listener * > m_listeners
Definition: vtk_legacy.h:185
auto read_coordinates(std::ifstream &file, std::size_t n)
Definition: vtk_legacy.h:354
auto read_points(std::ifstream &file) -> void
auto read_dimensions(std::ifstream &file) -> void
auto read_polygons(std::ifstream &file) -> void
auto read_vectors(std::ifstream &file) -> void
auto read_field(std::ifstream &file) -> void
auto read_vertices(std::ifstream &file) -> void
auto read_coordinates_binary(std::ifstream &file, std::size_t n) -> std::vector< Real >
Definition: vtk_legacy.h:373
static auto read_indices_binary(std::ifstream &file, std::size_t const size) -> std::vector< int >
auto read_coordinates_ascii(std::ifstream &file, std::size_t n) -> std::vector< Real >
Definition: vtk_legacy.h:363
std::ifstream::pos_type m_begin_of_data
Definition: vtk_legacy.h:191
auto add_listener(legacy_file_listener &listener) -> void
auto read_cell_types_binary(std::ifstream &file, std::size_t const n) -> void
auto read_data_header(std::ifstream &file)
auto read_scalars_binary(std::ifstream &file, std::string const &name, std::string const &lookup_table, std::size_t const num_comps) -> void
Definition: vtk_legacy.h:431
auto read_points_binary(std::ifstream &file, std::size_t const n) -> void
Definition: vtk_legacy.h:309
auto read_z_coordinates(std::ifstream &file) -> void
auto read_data_ascii(std::ifstream &file) -> std::vector< std::array< Real, N > >
Definition: vtk_legacy.h:333
reader_data m_data
Definition: vtk_legacy.h:189
auto set_path(filesystem::path const &path) -> void
Definition: vtk_legacy.h:201
auto read_cells(std::ifstream &file) -> void
std::size_t m_data_size
Definition: vtk_legacy.h:190
legacy_file(filesystem::path path)
auto read_origin(std::ifstream &file) -> void
static auto consume_trailing_break(std::ifstream &file) -> void
Definition: concepts.h:87
Definition: cell_type.h:6
auto read_binaryline(std::istream &stream, char *buffer) -> std::string
reads stream until a linebreak was found. buffer will not contain the break
auto parse_format(std::string const &) -> format
reader_data
Definition: vtk_legacy.h:42
auto read_until(std::istream &stream, char const terminator_char, char *buffer) -> std::string
auto write_binary(std::ostream &stream, std::string const &str) -> void
auto read_word(std::istream &stream, char *buffer) -> std::string
dataset_type
Definition: vtk_legacy.h:44
constexpr auto to_string_view(cell_type const ct) -> std::string_view
Definition: cell_type.h:26
auto parse_dataset_type(std::string const &) -> dataset_type
format
Definition: vtk_legacy.h:76
typename value_type_impl< T >::type value_type
Definition: type_traits.h:280
constexpr Data swap_endianess(Data data)
Definition: swap_endianess.h:9
auto size(vec< ValueType, N > const &v)
Definition: vec.h:148
Definition: vtk_legacy.h:92
virtual auto on_texture_coordinates(std::string const &, std::vector< std::array< float, 2 > > const &, reader_data) -> void
Definition: vtk_legacy.h:138
virtual auto on_y_coordinates(std::vector< float > const &) -> void
Definition: vtk_legacy.h:110
virtual auto on_point_data(std::size_t) -> void
Definition: vtk_legacy.h:164
virtual auto on_cells(std::vector< int > const &) -> void
Definition: vtk_legacy.h:116
virtual auto on_normals(std::string const &, std::vector< std::array< double, 3 > > const &, reader_data) -> void
Definition: vtk_legacy.h:134
virtual auto on_z_coordinates(std::vector< double > const &) -> void
Definition: vtk_legacy.h:113
virtual auto on_triangle_strips(std::vector< int > const &) -> void
Definition: vtk_legacy.h:121
virtual auto on_tensors(std::string const &, std::vector< std::array< float, 9 > > const &, reader_data) -> void
Definition: vtk_legacy.h:146
virtual auto on_spacing(double, double, double) -> void
Definition: vtk_legacy.h:105
virtual auto on_texture_coordinates(std::string const &, std::vector< std::array< double, 2 > > const &, reader_data) -> void
Definition: vtk_legacy.h:142
virtual auto on_scalars(std::string const &, std::string const &, std::size_t const, std::vector< double > const &, reader_data) -> void
Definition: vtk_legacy.h:159
virtual auto on_points(std::vector< std::array< float, 3 > > const &) -> void
Definition: vtk_legacy.h:102
virtual auto on_vectors(std::string const &, std::vector< std::array< float, 3 > > const &, reader_data) -> void
Definition: vtk_legacy.h:124
virtual auto on_points(std::vector< std::array< double, 3 > > const &) -> void
Definition: vtk_legacy.h:103
virtual auto on_scalars(std::string const &, std::string const &, std::size_t const, std::vector< float > const &, reader_data) -> void
Definition: vtk_legacy.h:154
virtual auto on_polygons(std::vector< int > const &) -> void
Definition: vtk_legacy.h:120
virtual ~legacy_file_listener()=default
virtual auto on_y_coordinates(std::vector< double > const &) -> void
Definition: vtk_legacy.h:111
virtual auto on_cell_data(std::size_t) -> void
Definition: vtk_legacy.h:165
virtual auto on_format(format) -> void
Definition: vtk_legacy.h:98
virtual auto on_tensors(std::string const &, std::vector< std::array< double, 9 > > const &, reader_data) -> void
Definition: vtk_legacy.h:149
virtual auto on_cell_types(std::vector< cell_type > const &) -> void
Definition: vtk_legacy.h:117
virtual auto on_version(unsigned short, unsigned short) -> void
Definition: vtk_legacy.h:95
virtual auto on_field_array(std::string const, std::string const, std::vector< float > const &, std::size_t, std::size_t) -> void
Definition: vtk_legacy.h:171
virtual auto on_z_coordinates(std::vector< float > const &) -> void
Definition: vtk_legacy.h:112
virtual auto on_normals(std::string const &, std::vector< std::array< float, 3 > > const &, reader_data) -> void
Definition: vtk_legacy.h:131
virtual auto on_lines(std::vector< int > const &) -> void
Definition: vtk_legacy.h:119
virtual auto on_dataset_type(dataset_type) -> void
Definition: vtk_legacy.h:99
virtual auto on_x_coordinates(std::vector< double > const &) -> void
Definition: vtk_legacy.h:109
virtual auto on_title(std::string const &) -> void
Definition: vtk_legacy.h:97
virtual auto on_dimensions(std::size_t, std::size_t, std::size_t) -> void
Definition: vtk_legacy.h:106
virtual auto on_vertices(std::vector< int > const &) -> void
Definition: vtk_legacy.h:118
virtual auto on_field_array(std::string const, std::string const, std::vector< double > const &, std::size_t, std::size_t) -> void
Definition: vtk_legacy.h:176
virtual auto on_vectors(std::string const &, std::vector< std::array< double, 3 > > const &, reader_data) -> void
Definition: vtk_legacy.h:127
virtual auto on_field_array(std::string const, std::string const, std::vector< int > const &, std::size_t, std::size_t) -> void
Definition: vtk_legacy.h:166
virtual auto on_origin(double, double, double) -> void
Definition: vtk_legacy.h:104
virtual auto on_x_coordinates(std::vector< float > const &) -> void
Definition: vtk_legacy.h:108