Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
1.0 kB
12
Indexable
#include "ppm_image.h"

#include <algorithm>
#include <cmath>
#include <iostream>
#include <string_view>

using namespace std;

// реализуйте вертикальное отражение
void VMirrInplace(img_lib::Image& image)
{
    const int w = image.GetWidth();
    const int h = image.GetHeight();
    const int i = h - 1;

    for (int y = 0; y < ceil(i / 2.); ++y) {
        img_lib::Color* line1 = image.GetLine(y);
        img_lib::Color* line2 = image.GetLine(i - y);
        swap_ranges(line1, line1 + w, line2);
    }
}

int main(int argc, const char** argv) {
    if (argc != 3) {
        cerr << "Usage: "sv << argv[0] << " <input image> <output image>"sv << endl;
        return 1;
    }

    auto image = img_lib::LoadPPM(argv[1]);
    if (!image) {
        cerr << "Error loading image"sv << endl;
        return 2;
    }

    VMirrInplace(image);

    if (!img_lib::SavePPM(argv[2], image)) {
        cerr << "Error saving image"sv << endl;
        return 3;
    }

    cout << "Image saved successfully!"sv << endl;
}