/* * The Npic library and tools * * Copyright (C) 2003 Edouard Thiel * * This program is free software under the terms of the * GNU Lesser General Public License (LGPL) version 2.1. */ /* * npic-sum.c - 22/11/2005 * */ #include void ShowUsage () { printf ( "npic-sum - Sum up pixel values.\n" "Usage:\n" " npic-sum -h | -help | --help : print help\n" " npic-sum -linear a b in1 out1 : out1 := in1*a + b\n" " npic-sum -bilin a b c in1 in2 out1 : out1 := in1*a + in2*b + c\n" " npic-sum -trilin a b c d in1 in2 in3 out1 : out1 := in1*a + in2*b + in3*c + d\n" " npic-sum -quad a b c in1 out1 : out1 := in1^2*a + in1*b + c\n" " npic-sum -biquad a b c d e in1 in2 out1 : out1 := in1^2*a + in1*b +\n" " in2^2*c + in2*d + e\n" "in1, out1 : image in " NPIC_KNOWN_IMAGE_EXT " format\n" "a, b, c, d, e : float.\n" ); } void ArgcExit (int argc, int n) { if (argc < n) { fprintf (stderr, "ERROR: %d argument(s) missing, " "type \"npic-sum -h\" to get help.\n", n-argc); exit (1); } } int main (int argc, char *argv[]) { ArgcExit (argc, 2); if (strcmp (argv[1], "-h") == 0 || strcmp (argv[1], "-help") == 0 || strcmp (argv[1], "--help") == 0) { ShowUsage (); exit (0); } /*------------------------------------------------------------------------*/ if (strcmp (argv[1], "-linear") == 0) { Npic_image *np1; char *in1, *out1; double a, b; ArgcExit (argc, 6); a = atof(argv[2]); b = atof(argv[3]); in1 = argv[4]; out1 = argv[5]; printf ("Loading \"%s\"\n", in1); np1 = NpicReadImage (in1); if (np1 == NULL) exit (1); printf ("Computing NpicLinearSum\n"); NpicLinearSum (np1, np1, a, b); printf ("Saving \"%s\"\n", out1); if (NpicWriteImage (np1, out1) != NPIC_SUCCESS) exit(1); NpicDestroyImage (np1); exit (0); } /*------------------------------------------------------------------------*/ if (strcmp (argv[1], "-bilin") == 0) { Npic_image *np1, *np2; char *in1, *in2, *out1; double a, b, c; ArgcExit (argc, 8); a = atof(argv[2]); b = atof(argv[3]); c = atof(argv[4]); in1 = argv[5]; in2 = argv[6]; out1 = argv[7]; printf ("Loading \"%s\"\n", in1); np1 = NpicReadImage (in1); if (np1 == NULL) exit (1); printf ("Loading \"%s\"\n", in2); np2 = NpicReadImage (in2); if (np2 == NULL) exit (1); printf ("Computing NpicBilinearSum\n"); NpicBilinearSum (np1, np1, np2, a, b, c); printf ("Saving \"%s\"\n", out1); if (NpicWriteImage (np1, out1) != NPIC_SUCCESS) exit(1); NpicDestroyImage (np1); NpicDestroyImage (np2); exit (0); } /*------------------------------------------------------------------------*/ if (strcmp (argv[1], "-trilin") == 0) { Npic_image *np1, *np2, *np3; char *in1, *in2, *in3, *out1; double a, b, c, d; ArgcExit (argc, 10); a = atof(argv[2]); b = atof(argv[3]); c = atof(argv[4]); d = atof(argv[5]); in1 = argv[6]; in2 = argv[7]; in3 = argv[8]; out1 = argv[9]; printf ("Loading \"%s\"\n", in1); np1 = NpicReadImage (in1); if (np1 == NULL) exit (1); printf ("Loading \"%s\"\n", in2); np2 = NpicReadImage (in2); if (np2 == NULL) exit (1); printf ("Loading \"%s\"\n", in3); np3 = NpicReadImage (in3); if (np3 == NULL) exit (1); printf ("Computing NpicTrilinearSum\n"); NpicTrilinearSum (np1, np1, np2, np3, a, b, c, d); printf ("Saving \"%s\"\n", out1); if (NpicWriteImage (np1, out1) != NPIC_SUCCESS) exit(1); NpicDestroyImage (np1); NpicDestroyImage (np2); NpicDestroyImage (np3); exit (0); } /*------------------------------------------------------------------------*/ if (strcmp (argv[1], "-quad") == 0) { Npic_image *np1; char *in1, *out1; double a, b, c; ArgcExit (argc, 7); a = atof(argv[2]); b = atof(argv[3]); c = atof(argv[4]); in1 = argv[5]; out1 = argv[6]; printf ("Loading \"%s\"\n", in1); np1 = NpicReadImage (in1); if (np1 == NULL) exit (1); printf ("Computing NpicQuadraticSum\n"); NpicQuadraticSum (np1, np1, a, b, c); printf ("Saving \"%s\"\n", out1); if (NpicWriteImage (np1, out1) != NPIC_SUCCESS) exit(1); NpicDestroyImage (np1); exit (0); } /*------------------------------------------------------------------------*/ if (strcmp (argv[1], "-biquad") == 0) { Npic_image *np1, *np2; char *in1, *in2, *out1; double a, b, c, d, e; ArgcExit (argc, 10); a = atof(argv[2]); b = atof(argv[3]); c = atof(argv[4]); d = atof(argv[5]); e = atof(argv[6]); in1 = argv[7]; in2 = argv[8]; out1 = argv[9]; printf ("Loading \"%s\"\n", in1); np1 = NpicReadImage (in1); if (np1 == NULL) exit (1); printf ("Loading \"%s\"\n", in2); np2 = NpicReadImage (in2); if (np2 == NULL) exit (1); printf ("Computing NpicBiQuadraticSum\n"); NpicBiQuadraticSum (np1, np1, np2, a, b, c, d, e); printf ("Saving \"%s\"\n", out1); if (NpicWriteImage (np1, out1) != NPIC_SUCCESS) exit(1); NpicDestroyImage (np1); NpicDestroyImage (np2); exit (0); } /*------------------------------------------------------------------------*/ fprintf (stderr, "ERROR: unknown argument \"%s\", " "type \"npic-sum -h\" to get help.\n", argv[1]); exit (1); }