diff options
| author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2026-10-26 20:05:20 +0100 |
|---|---|---|
| committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2026-10-26 20:05:20 +0100 |
| commit | 375d87a9b0ec1cf2fffd705adb870c86144d2400 (patch) | |
| tree | 1e8e05e7cd58686628d0f4622622456613a42e4d /src/JPEGOutputImage.cxx | |
| parent | 45425dd047b791fe63f13a46a3251c529cfffc94 (diff) | |
Replace the C++ implementation with the Rust port
The Rust port (formerly gipfel-rs) is now the official successor to the
FLTK/GSL C++ code base. This squashes the port into a single commit and
removes the C++ sources (they remain in the git history below).
Layout:
crates/gipfel-core headless core: hills, panorama geometry, projections
(maxima-generated derivatives), pure-Rust LM fit,
gipfel: JPEG comment + EXIF I/O, profiles, stitching
crates/gipfel-cli command-line tools (export, info, stitch, profiles)
crates/gipfel-app Cosmic DE (libcosmic) GUI, binary name `gipfel`
codegen/ maxima scripts + regen.sh for the projection code
tests/ golden files + C++ reference harnesses (historical)
The original README is kept for now; it will be updated to describe the
Rust build. gipfel.dat, AUTHORS, ChangeLog and NEWS are unchanged.
Diffstat (limited to 'src/JPEGOutputImage.cxx')
| -rw-r--r-- | src/JPEGOutputImage.cxx | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/src/JPEGOutputImage.cxx b/src/JPEGOutputImage.cxx deleted file mode 100644 index 8bbd40b..0000000 --- a/src/JPEGOutputImage.cxx +++ /dev/null @@ -1,104 +0,0 @@ -// -// Copyright 2006-2009 Johannes Hofmann <Johannes.Hofmann@gmx.de> -// -// This software may be used and distributed according to the terms -// of the GNU General Public License, incorporated herein by reference. - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -extern "C" { -#include <jpeglib.h> -} - -#include "JPEGOutputImage.H" - -JPEGOutputImage::JPEGOutputImage(const char *f, int q) : OutputImage() { - file = strdup(f); - fp = NULL; - row = NULL; - quality = q; -} - -JPEGOutputImage::~JPEGOutputImage() { - if (row) - free(row); - if (file) - free(file); -} - -int -JPEGOutputImage::init_internal() { - if (row) - free(row); - row = NULL; - - row = (unsigned char*) calloc(3 * W, sizeof(char)); - if (!row) { - perror("calloc"); - return 1; - } - - if (fp) - fclose(fp); - - if ((fp = fopen(file, "wb")) == NULL) { - fprintf(stderr, "can't open %s\n", file); - return 1; - } - - cinfo.err = jpeg_std_error(&jerr); - jpeg_create_compress(&cinfo); - jpeg_stdio_dest(&cinfo, fp); - cinfo.image_width = W; - cinfo.image_height = H; - cinfo.input_components = 3; /* # of color components per pixel */ - cinfo.in_color_space = JCS_RGB; - - jpeg_set_defaults(&cinfo); - jpeg_set_quality(&cinfo, quality, TRUE); - - jpeg_start_compress(&cinfo, TRUE); - - return 0; -} - -int -JPEGOutputImage::set_pixel_internal(int x, int r, int g, int b) { - row[x*3+0] = (unsigned char) (r / 255); - row[x*3+1] = (unsigned char) (g / 255); - row[x*3+2] = (unsigned char) (b / 255); - - return 0; -} - -int -JPEGOutputImage::next_line_internal() { - JSAMPROW row_pointer[1]; - - row_pointer[0] = row; - jpeg_write_scanlines(&cinfo, row_pointer, 1); - memset(row, 0, sizeof(char) * 3 * W); - return 0; -} - -int -JPEGOutputImage::done_internal() { - jpeg_finish_compress(&cinfo); - jpeg_destroy_compress(&cinfo); - - if (fp) - fclose(fp); - fp = NULL; - - if (row) - free(row); - row = NULL; - - if (fp) - fclose(fp); - fp = NULL; - - return 0; -} - |
