Skip to content

Commit

Permalink
Merge pull request #181 from HappySeaFox/feature/refactor-cpp-inputs
Browse files Browse the repository at this point in the history
Feature/refactor cpp inputs
  • Loading branch information
HappySeaFox committed Jul 17, 2022
2 parents e28d484 + 4a509c9 commit e445625
Show file tree
Hide file tree
Showing 8 changed files with 215 additions and 873 deletions.
15 changes: 4 additions & 11 deletions examples/c++/qt/advanced-with-c++-api/qtsail.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,14 +72,13 @@ sail_status_t QtSail::loadImage(const QString &path, QVector<QImage> *qimages, Q
qimages->clear();
delays->clear();

sail::image_input image_input;
sail::image image;
sail::image first_image;

// Initialize loading.
//
sail::io_file io_file(path.toLocal8Bit().constData());
SAIL_TRY(image_input.start(io_file));
sail::image_input image_input(io_file);

// Load all the available image frames in the file.
//
Expand Down Expand Up @@ -117,9 +116,6 @@ sail_status_t QtSail::loadImage(const QString &path, QVector<QImage> *qimages, Q

SAIL_LOG_DEBUG("Loaded images: %d", qimages->size());

// Optional
SAIL_TRY(image_input.stop());

m_ui->labelStatus->setText(tr("%1 [%2x%3] [%4 → %5]")
.arg(QFileInfo(path).fileName())
.arg(first_image.width())
Expand All @@ -139,7 +135,6 @@ sail_status_t QtSail::saveImage(const QString &path, const QImage &qimage)
SAIL_LOG_AND_RETURN(SAIL_ERROR_CODEC_NOT_FOUND);
}

sail::image_output image_output;
sail::image image(const_cast<uchar *>(qimage.bits()), qImageFormatToSailPixelFormat(qimage.format()), qimage.width(), qimage.height(), qimage.bytesPerLine());

// SAIL tries to save an image as is, preserving its pixel format.
Expand All @@ -162,10 +157,9 @@ sail_status_t QtSail::saveImage(const QString &path, const QImage &qimage)
//
save_options.tuning()["png-filter"] = std::string("none;sub");

SAIL_TRY(image_output.start(path.toLocal8Bit().constData(), save_options));
sail::image_output image_output(path.toLocal8Bit().constData());
image_output.with(save_options);
SAIL_TRY(image_output.next_frame(image));
// Optional
SAIL_TRY(image_output.stop());

return SAIL_OK;
}
Expand Down Expand Up @@ -208,8 +202,7 @@ sail_status_t QtSail::onProbe()
QElapsedTimer elapsedTimer;
elapsedTimer.start();

sail::image_input image_input;
auto [image, codec_info] = image_input.probe(path.toLocal8Bit().constData());
auto [image, codec_info] = sail::image_input(path.toLocal8Bit().constData()).probe();

QMessageBox::information(this,
tr("File info"),
Expand Down
7 changes: 3 additions & 4 deletions src/bindings/c++/image-c++.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -303,8 +303,7 @@ void image::set_iccp(sail::iccp &&iccp) noexcept

sail_status_t image::load(const std::string &path)
{
image_input input;
SAIL_TRY(input.start(path));
image_input input(path);

image img;
SAIL_TRY(input.next_frame(&img));
Expand All @@ -316,9 +315,9 @@ sail_status_t image::load(const std::string &path)

sail_status_t image::save(const std::string &path)
{
image_output output;
image_output output(path);

SAIL_TRY(output.save(path, *this));
SAIL_TRY(output.next_frame(*this));

return SAIL_OK;
}
Expand Down
Loading

0 comments on commit e445625

Please sign in to comment.