/* * The Npic library * * Copyright (C) 2003 Edouard Thiel * * This library is free software under the terms of the * GNU Lesser General Public License (LGPL) version 2.1. */ /* DO NOT EDIT !!! Generated by npic-templa from "calc_values.ct" */ /* * calc_values.c - 16/01/2003 * * Operations on pixel values */ #include /*--------------------- P U B L I C - I N T E R F A C E ----------------------*/ /* * I := val1 * Set all pixels to the value val1. * * Do not modify border pixels. * Do nothing if np is not ok. set not ok on error. Verbose. */ void NpicFillVal_i (Npic_image *np, int val1) { if (NpicImageIsOK (np, __func__) != NPIC_SUCCESS) return; switch (np->type) { case NPIC_IMAGE_2C : { Npic_image_2c *p1 = NpicCastImage(np); int y, x; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[y][x] = val1; return; } case NPIC_IMAGE_2L : { Npic_image_2l *p1 = NpicCastImage(np); int y, x; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[y][x] = val1; return; } case NPIC_IMAGE_3C : { Npic_image_3c *p1 = NpicCastImage(np); int z, y, x; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[z][y][x] = val1; return; } case NPIC_IMAGE_3L : { Npic_image_3l *p1 = NpicCastImage(np); int z, y, x; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[z][y][x] = val1; return; } case NPIC_IMAGE_4C : { Npic_image_4c *p1 = NpicCastImage(np); int t, z, y, x; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[t][z][y][x] = val1; return; } case NPIC_IMAGE_4L : { Npic_image_4l *p1 = NpicCastImage(np); int t, z, y, x; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[t][z][y][x] = val1; return; } case NPIC_IMAGE_5C : { Npic_image_5c *p1 = NpicCastImage(np); int s, t, z, y, x; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[s][t][z][y][x] = val1; return; } case NPIC_IMAGE_5L : { Npic_image_5l *p1 = NpicCastImage(np); int s, t, z, y, x; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[s][t][z][y][x] = val1; return; } case NPIC_IMAGE_6C : { Npic_image_6c *p1 = NpicCastImage(np); int r, s, t, z, y, x; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[r][s][t][z][y][x] = val1; return; } case NPIC_IMAGE_6L : { Npic_image_6l *p1 = NpicCastImage(np); int r, s, t, z, y, x; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[r][s][t][z][y][x] = val1; return; } default : np->gen.ok = NpicError (__func__, NPIC_ERR_UNEX_NPIC, ""); } } void NpicFillVal_d (Npic_image *np, double val1) { if (NpicImageIsOK (np, __func__) != NPIC_SUCCESS) return; switch (np->type) { case NPIC_IMAGE_2D : { Npic_image_2d *p1 = NpicCastImage(np); int y, x; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[y][x] = val1; return; } case NPIC_IMAGE_3D : { Npic_image_3d *p1 = NpicCastImage(np); int z, y, x; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[z][y][x] = val1; return; } case NPIC_IMAGE_4D : { Npic_image_4d *p1 = NpicCastImage(np); int t, z, y, x; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[t][z][y][x] = val1; return; } case NPIC_IMAGE_5D : { Npic_image_5d *p1 = NpicCastImage(np); int s, t, z, y, x; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[s][t][z][y][x] = val1; return; } case NPIC_IMAGE_6D : { Npic_image_6d *p1 = NpicCastImage(np); int r, s, t, z, y, x; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) p1->pix[r][s][t][z][y][x] = val1; return; } default : np->gen.ok = NpicError (__func__, NPIC_ERR_UNEX_NPIC, ""); } } void NpicFillVal_q (Npic_image *np, int a, int b, int c, int d) { if (NpicImageIsOK (np, __func__) != NPIC_SUCCESS) return; switch (np->type) { case NPIC_IMAGE_2Q : { Npic_image_2q *p1 = NpicCastImage(np); int y, x; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) { p1->pix[y][x].a = a; p1->pix[y][x].b = b; p1->pix[y][x].c = c; p1->pix[y][x].d = d; } return; } case NPIC_IMAGE_3Q : { Npic_image_3q *p1 = NpicCastImage(np); int z, y, x; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) { p1->pix[z][y][x].a = a; p1->pix[z][y][x].b = b; p1->pix[z][y][x].c = c; p1->pix[z][y][x].d = d; } return; } case NPIC_IMAGE_4Q : { Npic_image_4q *p1 = NpicCastImage(np); int t, z, y, x; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) { p1->pix[t][z][y][x].a = a; p1->pix[t][z][y][x].b = b; p1->pix[t][z][y][x].c = c; p1->pix[t][z][y][x].d = d; } return; } case NPIC_IMAGE_5Q : { Npic_image_5q *p1 = NpicCastImage(np); int s, t, z, y, x; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) { p1->pix[s][t][z][y][x].a = a; p1->pix[s][t][z][y][x].b = b; p1->pix[s][t][z][y][x].c = c; p1->pix[s][t][z][y][x].d = d; } return; } case NPIC_IMAGE_6Q : { Npic_image_6q *p1 = NpicCastImage(np); int r, s, t, z, y, x; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) { p1->pix[r][s][t][z][y][x].a = a; p1->pix[r][s][t][z][y][x].b = b; p1->pix[r][s][t][z][y][x].c = c; p1->pix[r][s][t][z][y][x].d = d; } return; } default : np->gen.ok = NpicError (__func__, NPIC_ERR_UNEX_NPIC, ""); } } /*----------------------------------------------------------------------------*/ /* * val1 -> val2 * Set each pixel having value val1 to the value val2. * * Do not modify border pixels. * Do nothing if np is not ok. set not ok on error. Verbose. */ void NpicChangeVal_i (Npic_image *np, int val1, int val2) { if (NpicImageIsOK (np, __func__) != NPIC_SUCCESS) return; switch (np->type) { case NPIC_IMAGE_2C : { Npic_image_2c *p1 = NpicCastImage(np); int y, x; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[y][x] == val1) p1->pix[y][x] = val2; return; } case NPIC_IMAGE_2L : { Npic_image_2l *p1 = NpicCastImage(np); int y, x; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[y][x] == val1) p1->pix[y][x] = val2; return; } case NPIC_IMAGE_3C : { Npic_image_3c *p1 = NpicCastImage(np); int z, y, x; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[z][y][x] == val1) p1->pix[z][y][x] = val2; return; } case NPIC_IMAGE_3L : { Npic_image_3l *p1 = NpicCastImage(np); int z, y, x; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[z][y][x] == val1) p1->pix[z][y][x] = val2; return; } case NPIC_IMAGE_4C : { Npic_image_4c *p1 = NpicCastImage(np); int t, z, y, x; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[t][z][y][x] == val1) p1->pix[t][z][y][x] = val2; return; } case NPIC_IMAGE_4L : { Npic_image_4l *p1 = NpicCastImage(np); int t, z, y, x; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[t][z][y][x] == val1) p1->pix[t][z][y][x] = val2; return; } case NPIC_IMAGE_5C : { Npic_image_5c *p1 = NpicCastImage(np); int s, t, z, y, x; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[s][t][z][y][x] == val1) p1->pix[s][t][z][y][x] = val2; return; } case NPIC_IMAGE_5L : { Npic_image_5l *p1 = NpicCastImage(np); int s, t, z, y, x; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[s][t][z][y][x] == val1) p1->pix[s][t][z][y][x] = val2; return; } case NPIC_IMAGE_6C : { Npic_image_6c *p1 = NpicCastImage(np); int r, s, t, z, y, x; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[r][s][t][z][y][x] == val1) p1->pix[r][s][t][z][y][x] = val2; return; } case NPIC_IMAGE_6L : { Npic_image_6l *p1 = NpicCastImage(np); int r, s, t, z, y, x; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[r][s][t][z][y][x] == val1) p1->pix[r][s][t][z][y][x] = val2; return; } default : np->gen.ok = NpicError (__func__, NPIC_ERR_UNEX_NPIC, ""); } } void NpicChangeVal_d (Npic_image *np, double val1, double val2) { if (NpicImageIsOK (np, __func__) != NPIC_SUCCESS) return; switch (np->type) { case NPIC_IMAGE_2D : { Npic_image_2d *p1 = NpicCastImage(np); int y, x; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[y][x] == val1) p1->pix[y][x] = val2; return; } case NPIC_IMAGE_3D : { Npic_image_3d *p1 = NpicCastImage(np); int z, y, x; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[z][y][x] == val1) p1->pix[z][y][x] = val2; return; } case NPIC_IMAGE_4D : { Npic_image_4d *p1 = NpicCastImage(np); int t, z, y, x; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[t][z][y][x] == val1) p1->pix[t][z][y][x] = val2; return; } case NPIC_IMAGE_5D : { Npic_image_5d *p1 = NpicCastImage(np); int s, t, z, y, x; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[s][t][z][y][x] == val1) p1->pix[s][t][z][y][x] = val2; return; } case NPIC_IMAGE_6D : { Npic_image_6d *p1 = NpicCastImage(np); int r, s, t, z, y, x; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[r][s][t][z][y][x] == val1) p1->pix[r][s][t][z][y][x] = val2; return; } default : np->gen.ok = NpicError (__func__, NPIC_ERR_UNEX_NPIC, ""); } } void NpicChangeVal_q (Npic_image *np, int a1, int b1, int c1, int d1, int a2, int b2, int c2, int d2) { if (NpicImageIsOK (np, __func__) != NPIC_SUCCESS) return; switch (np->type) { case NPIC_IMAGE_2Q : { Npic_image_2q *p1 = NpicCastImage(np); int y, x; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[y][x].a == a1 && p1->pix[y][x].b == b1 && p1->pix[y][x].c == c1 && p1->pix[y][x].d == d1 ) { p1->pix[y][x].a = a2; p1->pix[y][x].b = b2; p1->pix[y][x].c = c2; p1->pix[y][x].d = d2; } return; } case NPIC_IMAGE_3Q : { Npic_image_3q *p1 = NpicCastImage(np); int z, y, x; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[z][y][x].a == a1 && p1->pix[z][y][x].b == b1 && p1->pix[z][y][x].c == c1 && p1->pix[z][y][x].d == d1 ) { p1->pix[z][y][x].a = a2; p1->pix[z][y][x].b = b2; p1->pix[z][y][x].c = c2; p1->pix[z][y][x].d = d2; } return; } case NPIC_IMAGE_4Q : { Npic_image_4q *p1 = NpicCastImage(np); int t, z, y, x; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[t][z][y][x].a == a1 && p1->pix[t][z][y][x].b == b1 && p1->pix[t][z][y][x].c == c1 && p1->pix[t][z][y][x].d == d1 ) { p1->pix[t][z][y][x].a = a2; p1->pix[t][z][y][x].b = b2; p1->pix[t][z][y][x].c = c2; p1->pix[t][z][y][x].d = d2; } return; } case NPIC_IMAGE_5Q : { Npic_image_5q *p1 = NpicCastImage(np); int s, t, z, y, x; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[s][t][z][y][x].a == a1 && p1->pix[s][t][z][y][x].b == b1 && p1->pix[s][t][z][y][x].c == c1 && p1->pix[s][t][z][y][x].d == d1 ) { p1->pix[s][t][z][y][x].a = a2; p1->pix[s][t][z][y][x].b = b2; p1->pix[s][t][z][y][x].c = c2; p1->pix[s][t][z][y][x].d = d2; } return; } case NPIC_IMAGE_6Q : { Npic_image_6q *p1 = NpicCastImage(np); int r, s, t, z, y, x; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[r][s][t][z][y][x].a == a1 && p1->pix[r][s][t][z][y][x].b == b1 && p1->pix[r][s][t][z][y][x].c == c1 && p1->pix[r][s][t][z][y][x].d == d1 ) { p1->pix[r][s][t][z][y][x].a = a2; p1->pix[r][s][t][z][y][x].b = b2; p1->pix[r][s][t][z][y][x].c = c2; p1->pix[r][s][t][z][y][x].d = d2; } return; } default : np->gen.ok = NpicError (__func__, NPIC_ERR_UNEX_NPIC, ""); } } /*----------------------------------------------------------------------------*/ /* * val1 <-> val2 * Set each pixel having value val1 to the value val2, and vice versa. * * Do not modify border pixels. * Do nothing if np is not ok. set not ok on error. Verbose. */ void NpicExchangeVal_i (Npic_image *np, int val1, int val2) { if (NpicImageIsOK (np, __func__) != NPIC_SUCCESS) return; switch (np->type) { case NPIC_IMAGE_2C : { Npic_image_2c *p1 = NpicCastImage(np); int y, x; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[y][x] == val1) p1->pix[y][x] = val2; else if (p1->pix[y][x] == val2) p1->pix[y][x] = val1; return; } case NPIC_IMAGE_2L : { Npic_image_2l *p1 = NpicCastImage(np); int y, x; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[y][x] == val1) p1->pix[y][x] = val2; else if (p1->pix[y][x] == val2) p1->pix[y][x] = val1; return; } case NPIC_IMAGE_3C : { Npic_image_3c *p1 = NpicCastImage(np); int z, y, x; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[z][y][x] == val1) p1->pix[z][y][x] = val2; else if (p1->pix[z][y][x] == val2) p1->pix[z][y][x] = val1; return; } case NPIC_IMAGE_3L : { Npic_image_3l *p1 = NpicCastImage(np); int z, y, x; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[z][y][x] == val1) p1->pix[z][y][x] = val2; else if (p1->pix[z][y][x] == val2) p1->pix[z][y][x] = val1; return; } case NPIC_IMAGE_4C : { Npic_image_4c *p1 = NpicCastImage(np); int t, z, y, x; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[t][z][y][x] == val1) p1->pix[t][z][y][x] = val2; else if (p1->pix[t][z][y][x] == val2) p1->pix[t][z][y][x] = val1; return; } case NPIC_IMAGE_4L : { Npic_image_4l *p1 = NpicCastImage(np); int t, z, y, x; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[t][z][y][x] == val1) p1->pix[t][z][y][x] = val2; else if (p1->pix[t][z][y][x] == val2) p1->pix[t][z][y][x] = val1; return; } case NPIC_IMAGE_5C : { Npic_image_5c *p1 = NpicCastImage(np); int s, t, z, y, x; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[s][t][z][y][x] == val1) p1->pix[s][t][z][y][x] = val2; else if (p1->pix[s][t][z][y][x] == val2) p1->pix[s][t][z][y][x] = val1; return; } case NPIC_IMAGE_5L : { Npic_image_5l *p1 = NpicCastImage(np); int s, t, z, y, x; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[s][t][z][y][x] == val1) p1->pix[s][t][z][y][x] = val2; else if (p1->pix[s][t][z][y][x] == val2) p1->pix[s][t][z][y][x] = val1; return; } case NPIC_IMAGE_6C : { Npic_image_6c *p1 = NpicCastImage(np); int r, s, t, z, y, x; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[r][s][t][z][y][x] == val1) p1->pix[r][s][t][z][y][x] = val2; else if (p1->pix[r][s][t][z][y][x] == val2) p1->pix[r][s][t][z][y][x] = val1; return; } case NPIC_IMAGE_6L : { Npic_image_6l *p1 = NpicCastImage(np); int r, s, t, z, y, x; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[r][s][t][z][y][x] == val1) p1->pix[r][s][t][z][y][x] = val2; else if (p1->pix[r][s][t][z][y][x] == val2) p1->pix[r][s][t][z][y][x] = val1; return; } default : np->gen.ok = NpicError (__func__, NPIC_ERR_UNEX_NPIC, ""); } } void NpicExchangeVal_d (Npic_image *np, double val1, double val2) { if (NpicImageIsOK (np, __func__) != NPIC_SUCCESS) return; switch (np->type) { case NPIC_IMAGE_2D : { Npic_image_2d *p1 = NpicCastImage(np); int y, x; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[y][x] == val1) p1->pix[y][x] = val2; else if (p1->pix[y][x] == val2) p1->pix[y][x] = val1; return; } case NPIC_IMAGE_3D : { Npic_image_3d *p1 = NpicCastImage(np); int z, y, x; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[z][y][x] == val1) p1->pix[z][y][x] = val2; else if (p1->pix[z][y][x] == val2) p1->pix[z][y][x] = val1; return; } case NPIC_IMAGE_4D : { Npic_image_4d *p1 = NpicCastImage(np); int t, z, y, x; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[t][z][y][x] == val1) p1->pix[t][z][y][x] = val2; else if (p1->pix[t][z][y][x] == val2) p1->pix[t][z][y][x] = val1; return; } case NPIC_IMAGE_5D : { Npic_image_5d *p1 = NpicCastImage(np); int s, t, z, y, x; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[s][t][z][y][x] == val1) p1->pix[s][t][z][y][x] = val2; else if (p1->pix[s][t][z][y][x] == val2) p1->pix[s][t][z][y][x] = val1; return; } case NPIC_IMAGE_6D : { Npic_image_6d *p1 = NpicCastImage(np); int r, s, t, z, y, x; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[r][s][t][z][y][x] == val1) p1->pix[r][s][t][z][y][x] = val2; else if (p1->pix[r][s][t][z][y][x] == val2) p1->pix[r][s][t][z][y][x] = val1; return; } default : np->gen.ok = NpicError (__func__, NPIC_ERR_UNEX_NPIC, ""); } } void NpicExchangeVal_q (Npic_image *np, int a1, int b1, int c1, int d1, int a2, int b2, int c2, int d2) { if (NpicImageIsOK (np, __func__) != NPIC_SUCCESS) return; switch (np->type) { case NPIC_IMAGE_2Q : { Npic_image_2q *p1 = NpicCastImage(np); int y, x; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[y][x].a == a1 && p1->pix[y][x].b == b1 && p1->pix[y][x].c == c1 && p1->pix[y][x].d == d1 ) { p1->pix[y][x].a = a2; p1->pix[y][x].b = b2; p1->pix[y][x].c = c2; p1->pix[y][x].d = d2; } else if (p1->pix[y][x].a == a2 && p1->pix[y][x].b == b2 && p1->pix[y][x].c == c2 && p1->pix[y][x].d == d2 ) { p1->pix[y][x].a = a1; p1->pix[y][x].b = b1; p1->pix[y][x].c = c1; p1->pix[y][x].d = d1; } return; } case NPIC_IMAGE_3Q : { Npic_image_3q *p1 = NpicCastImage(np); int z, y, x; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[z][y][x].a == a1 && p1->pix[z][y][x].b == b1 && p1->pix[z][y][x].c == c1 && p1->pix[z][y][x].d == d1 ) { p1->pix[z][y][x].a = a2; p1->pix[z][y][x].b = b2; p1->pix[z][y][x].c = c2; p1->pix[z][y][x].d = d2; } else if (p1->pix[z][y][x].a == a2 && p1->pix[z][y][x].b == b2 && p1->pix[z][y][x].c == c2 && p1->pix[z][y][x].d == d2 ) { p1->pix[z][y][x].a = a1; p1->pix[z][y][x].b = b1; p1->pix[z][y][x].c = c1; p1->pix[z][y][x].d = d1; } return; } case NPIC_IMAGE_4Q : { Npic_image_4q *p1 = NpicCastImage(np); int t, z, y, x; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[t][z][y][x].a == a1 && p1->pix[t][z][y][x].b == b1 && p1->pix[t][z][y][x].c == c1 && p1->pix[t][z][y][x].d == d1 ) { p1->pix[t][z][y][x].a = a2; p1->pix[t][z][y][x].b = b2; p1->pix[t][z][y][x].c = c2; p1->pix[t][z][y][x].d = d2; } else if (p1->pix[t][z][y][x].a == a2 && p1->pix[t][z][y][x].b == b2 && p1->pix[t][z][y][x].c == c2 && p1->pix[t][z][y][x].d == d2 ) { p1->pix[t][z][y][x].a = a1; p1->pix[t][z][y][x].b = b1; p1->pix[t][z][y][x].c = c1; p1->pix[t][z][y][x].d = d1; } return; } case NPIC_IMAGE_5Q : { Npic_image_5q *p1 = NpicCastImage(np); int s, t, z, y, x; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[s][t][z][y][x].a == a1 && p1->pix[s][t][z][y][x].b == b1 && p1->pix[s][t][z][y][x].c == c1 && p1->pix[s][t][z][y][x].d == d1 ) { p1->pix[s][t][z][y][x].a = a2; p1->pix[s][t][z][y][x].b = b2; p1->pix[s][t][z][y][x].c = c2; p1->pix[s][t][z][y][x].d = d2; } else if (p1->pix[s][t][z][y][x].a == a2 && p1->pix[s][t][z][y][x].b == b2 && p1->pix[s][t][z][y][x].c == c2 && p1->pix[s][t][z][y][x].d == d2 ) { p1->pix[s][t][z][y][x].a = a1; p1->pix[s][t][z][y][x].b = b1; p1->pix[s][t][z][y][x].c = c1; p1->pix[s][t][z][y][x].d = d1; } return; } case NPIC_IMAGE_6Q : { Npic_image_6q *p1 = NpicCastImage(np); int r, s, t, z, y, x; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[r][s][t][z][y][x].a == a1 && p1->pix[r][s][t][z][y][x].b == b1 && p1->pix[r][s][t][z][y][x].c == c1 && p1->pix[r][s][t][z][y][x].d == d1 ) { p1->pix[r][s][t][z][y][x].a = a2; p1->pix[r][s][t][z][y][x].b = b2; p1->pix[r][s][t][z][y][x].c = c2; p1->pix[r][s][t][z][y][x].d = d2; } else if (p1->pix[r][s][t][z][y][x].a == a2 && p1->pix[r][s][t][z][y][x].b == b2 && p1->pix[r][s][t][z][y][x].c == c2 && p1->pix[r][s][t][z][y][x].d == d2 ) { p1->pix[r][s][t][z][y][x].a = a1; p1->pix[r][s][t][z][y][x].b = b1; p1->pix[r][s][t][z][y][x].c = c1; p1->pix[r][s][t][z][y][x].d = d1; } return; } default : np->gen.ok = NpicError (__func__, NPIC_ERR_UNEX_NPIC, ""); } } /*----------------------------------------------------------------------------*/ /* * Return the max or min of pixels values in image interior. */ double NpicMaxValue (Npic_image *np1) { double res = 0; if (NpicImageIsOK (np1, __func__) != NPIC_SUCCESS) return res; switch (np1->type) { case NPIC_IMAGE_2C : { Npic_image_2c *p1 = NpicCastImage (np1); int y, x; Npic_c m = p1->pix[0][0]; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[y][x] > m) m = p1->pix[y][x]; res = m; } break; case NPIC_IMAGE_2L : { Npic_image_2l *p1 = NpicCastImage (np1); int y, x; Npic_l m = p1->pix[0][0]; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[y][x] > m) m = p1->pix[y][x]; res = m; } break; case NPIC_IMAGE_2D : { Npic_image_2d *p1 = NpicCastImage (np1); int y, x; Npic_d m = p1->pix[0][0]; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[y][x] > m) m = p1->pix[y][x]; res = m; } break; case NPIC_IMAGE_3C : { Npic_image_3c *p1 = NpicCastImage (np1); int z, y, x; Npic_c m = p1->pix[0][0][0]; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[z][y][x] > m) m = p1->pix[z][y][x]; res = m; } break; case NPIC_IMAGE_3L : { Npic_image_3l *p1 = NpicCastImage (np1); int z, y, x; Npic_l m = p1->pix[0][0][0]; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[z][y][x] > m) m = p1->pix[z][y][x]; res = m; } break; case NPIC_IMAGE_3D : { Npic_image_3d *p1 = NpicCastImage (np1); int z, y, x; Npic_d m = p1->pix[0][0][0]; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[z][y][x] > m) m = p1->pix[z][y][x]; res = m; } break; case NPIC_IMAGE_4C : { Npic_image_4c *p1 = NpicCastImage (np1); int t, z, y, x; Npic_c m = p1->pix[0][0][0][0]; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[t][z][y][x] > m) m = p1->pix[t][z][y][x]; res = m; } break; case NPIC_IMAGE_4L : { Npic_image_4l *p1 = NpicCastImage (np1); int t, z, y, x; Npic_l m = p1->pix[0][0][0][0]; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[t][z][y][x] > m) m = p1->pix[t][z][y][x]; res = m; } break; case NPIC_IMAGE_4D : { Npic_image_4d *p1 = NpicCastImage (np1); int t, z, y, x; Npic_d m = p1->pix[0][0][0][0]; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[t][z][y][x] > m) m = p1->pix[t][z][y][x]; res = m; } break; case NPIC_IMAGE_5C : { Npic_image_5c *p1 = NpicCastImage (np1); int s, t, z, y, x; Npic_c m = p1->pix[0][0][0][0][0]; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[s][t][z][y][x] > m) m = p1->pix[s][t][z][y][x]; res = m; } break; case NPIC_IMAGE_5L : { Npic_image_5l *p1 = NpicCastImage (np1); int s, t, z, y, x; Npic_l m = p1->pix[0][0][0][0][0]; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[s][t][z][y][x] > m) m = p1->pix[s][t][z][y][x]; res = m; } break; case NPIC_IMAGE_5D : { Npic_image_5d *p1 = NpicCastImage (np1); int s, t, z, y, x; Npic_d m = p1->pix[0][0][0][0][0]; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[s][t][z][y][x] > m) m = p1->pix[s][t][z][y][x]; res = m; } break; case NPIC_IMAGE_6C : { Npic_image_6c *p1 = NpicCastImage (np1); int r, s, t, z, y, x; Npic_c m = p1->pix[0][0][0][0][0][0]; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[r][s][t][z][y][x] > m) m = p1->pix[r][s][t][z][y][x]; res = m; } break; case NPIC_IMAGE_6L : { Npic_image_6l *p1 = NpicCastImage (np1); int r, s, t, z, y, x; Npic_l m = p1->pix[0][0][0][0][0][0]; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[r][s][t][z][y][x] > m) m = p1->pix[r][s][t][z][y][x]; res = m; } break; case NPIC_IMAGE_6D : { Npic_image_6d *p1 = NpicCastImage (np1); int r, s, t, z, y, x; Npic_d m = p1->pix[0][0][0][0][0][0]; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[r][s][t][z][y][x] > m) m = p1->pix[r][s][t][z][y][x]; res = m; } break; default : np1->gen.ok = NpicError (__func__, NPIC_ERR_UNEX_NPIC, ""); } return res; } double NpicMinValue (Npic_image *np1) { double res = 0; if (NpicImageIsOK (np1, __func__) != NPIC_SUCCESS) return res; switch (np1->type) { case NPIC_IMAGE_2C : { Npic_image_2c *p1 = NpicCastImage (np1); int y, x; Npic_c m = p1->pix[0][0]; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[y][x] < m) m = p1->pix[y][x]; res = m; } break; case NPIC_IMAGE_2L : { Npic_image_2l *p1 = NpicCastImage (np1); int y, x; Npic_l m = p1->pix[0][0]; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[y][x] < m) m = p1->pix[y][x]; res = m; } break; case NPIC_IMAGE_2D : { Npic_image_2d *p1 = NpicCastImage (np1); int y, x; Npic_d m = p1->pix[0][0]; for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[y][x] < m) m = p1->pix[y][x]; res = m; } break; case NPIC_IMAGE_3C : { Npic_image_3c *p1 = NpicCastImage (np1); int z, y, x; Npic_c m = p1->pix[0][0][0]; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[z][y][x] < m) m = p1->pix[z][y][x]; res = m; } break; case NPIC_IMAGE_3L : { Npic_image_3l *p1 = NpicCastImage (np1); int z, y, x; Npic_l m = p1->pix[0][0][0]; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[z][y][x] < m) m = p1->pix[z][y][x]; res = m; } break; case NPIC_IMAGE_3D : { Npic_image_3d *p1 = NpicCastImage (np1); int z, y, x; Npic_d m = p1->pix[0][0][0]; for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[z][y][x] < m) m = p1->pix[z][y][x]; res = m; } break; case NPIC_IMAGE_4C : { Npic_image_4c *p1 = NpicCastImage (np1); int t, z, y, x; Npic_c m = p1->pix[0][0][0][0]; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[t][z][y][x] < m) m = p1->pix[t][z][y][x]; res = m; } break; case NPIC_IMAGE_4L : { Npic_image_4l *p1 = NpicCastImage (np1); int t, z, y, x; Npic_l m = p1->pix[0][0][0][0]; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[t][z][y][x] < m) m = p1->pix[t][z][y][x]; res = m; } break; case NPIC_IMAGE_4D : { Npic_image_4d *p1 = NpicCastImage (np1); int t, z, y, x; Npic_d m = p1->pix[0][0][0][0]; for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[t][z][y][x] < m) m = p1->pix[t][z][y][x]; res = m; } break; case NPIC_IMAGE_5C : { Npic_image_5c *p1 = NpicCastImage (np1); int s, t, z, y, x; Npic_c m = p1->pix[0][0][0][0][0]; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[s][t][z][y][x] < m) m = p1->pix[s][t][z][y][x]; res = m; } break; case NPIC_IMAGE_5L : { Npic_image_5l *p1 = NpicCastImage (np1); int s, t, z, y, x; Npic_l m = p1->pix[0][0][0][0][0]; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[s][t][z][y][x] < m) m = p1->pix[s][t][z][y][x]; res = m; } break; case NPIC_IMAGE_5D : { Npic_image_5d *p1 = NpicCastImage (np1); int s, t, z, y, x; Npic_d m = p1->pix[0][0][0][0][0]; for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[s][t][z][y][x] < m) m = p1->pix[s][t][z][y][x]; res = m; } break; case NPIC_IMAGE_6C : { Npic_image_6c *p1 = NpicCastImage (np1); int r, s, t, z, y, x; Npic_c m = p1->pix[0][0][0][0][0][0]; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[r][s][t][z][y][x] < m) m = p1->pix[r][s][t][z][y][x]; res = m; } break; case NPIC_IMAGE_6L : { Npic_image_6l *p1 = NpicCastImage (np1); int r, s, t, z, y, x; Npic_l m = p1->pix[0][0][0][0][0][0]; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[r][s][t][z][y][x] < m) m = p1->pix[r][s][t][z][y][x]; res = m; } break; case NPIC_IMAGE_6D : { Npic_image_6d *p1 = NpicCastImage (np1); int r, s, t, z, y, x; Npic_d m = p1->pix[0][0][0][0][0][0]; for (r = 0; r < p1->rmax; r++) for (s = 0; s < p1->smax; s++) for (t = 0; t < p1->tmax; t++) for (z = 0; z < p1->zmax; z++) for (y = 0; y < p1->ymax; y++) for (x = 0; x < p1->xmax; x++) if (p1->pix[r][s][t][z][y][x] < m) m = p1->pix[r][s][t][z][y][x]; res = m; } break; default : np1->gen.ok = NpicError (__func__, NPIC_ERR_UNEX_NPIC, ""); } return res; } /*----------------------------------------------------------------------------*/