<xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

[ Main ] [ Download ] [ Screenshots ] [ FAQ ] [ Tutorial ] [ Documentation ] [ Forum ] [ Links ]

- Main Page
- Modules
- Namespaces
- Classes

- Namespace List
- Namespace Members

Functions | Variables
cimg_library::cimg Namespace Reference

Contains low-level functions and variables of the `CImg` Library. More...

## Functions

std::FILE * | output (std::FILE *file)
| Get/set default output stream for the `CImg` library messages.
void | info ()
| Print informations about `CImg` environement variables.
template<typename T >
void | unused (const T &,...)
| Avoid warning messages due to unused parameters. Do nothing actually.
unsigned int & | exception_mode (const unsigned int mode)
| Set current `CImg` exception mode.
unsigned int & | exception_mode ()
| Return current `CImg` exception mode.
int | dialog (const char *const title, const char *const msg, const char *const button1_label, const char *const button2_label, const char *const button3_label, const char *const button4_label, const char *const button5_label, const char *const button6_label, const bool is_centered)
| Display a simple dialog box, and wait for the user's response [specialization].
double | eval (const char *const expression, const double x, const double y, const double z, const double c)
| Evaluate math expression.
void | warn (const char *const format,...)
| Display a warning message on the default output stream.
int | system (const char *const command, const char *const module_name=0)
template<typename T >
T & | temporary (const T &)
| Return a reference to a temporary variable of type T.
template<typename T >
void | swap (T &a, T &b)
| Exchange values of variables `a` and `b`.
template<typename T1 , typename T2 >
void | swap (T1 &a1, T1 &b1, T2 &a2, T2 &b2)
| Exchange values of variables (`a1`,`a2`) and (`b1`,`b2`).
template<typename T1 , typename T2 , typename T3 >
void | swap (T1 &a1, T1 &b1, T2 &a2, T2 &b2, T3 &a3, T3 &b3)
| Exchange values of variables (`a1`,`a2`,`a3`) and (`b1`,`b2`,`b3`).
template<typename T1 , typename T2 , typename T3 , typename T4 >
void | swap (T1 &a1, T1 &b1, T2 &a2, T2 &b2, T3 &a3, T3 &b3, T4 &a4, T4 &b4)
| Exchange values of variables (`a1`,`a2`,...,`a4`) and (`b1`,`b2`,...,`b4`).
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
void | swap (T1 &a1, T1 &b1, T2 &a2, T2 &b2, T3 &a3, T3 &b3, T4 &a4, T4 &b4, T5 &a5, T5 &b5)
| Exchange values of variables (`a1`,`a2`,...,`a5`) and (`b1`,`b2`,...,`b5`).
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
void | swap (T1 &a1, T1 &b1, T2 &a2, T2 &b2, T3 &a3, T3 &b3, T4 &a4, T4 &b4, T5 &a5, T5 &b5, T6 &a6, T6 &b6)
| Exchange values of variables (`a1`,`a2`,...,`a6`) and (`b1`,`b2`,...,`b6`).
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
void | swap (T1 &a1, T1 &b1, T2 &a2, T2 &b2, T3 &a3, T3 &b3, T4 &a4, T4 &b4, T5 &a5, T5 &b5, T6 &a6, T6 &b6, T7 &a7, T7 &b7)
| Exchange values of variables (`a1`,`a2`,...,`a7`) and (`b1`,`b2`,...,`b7`).
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 >
void | swap (T1 &a1, T1 &b1, T2 &a2, T2 &b2, T3 &a3, T3 &b3, T4 &a4, T4 &b4, T5 &a5, T5 &b5, T6 &a6, T6 &b6, T7 &a7, T7 &b7, T8 &a8, T8 &b8)
| Exchange values of variables (`a1`,`a2`,...,`a8`) and (`b1`,`b2`,...,`b8`).
bool | endianness ()
| Return the endianness of the current architecture.
template<typename T >
void | invert_endianness (T *const buffer, const unsigned long size)
| Reverse endianness of all elements in a memory buffer.
template<typename T >
T & | invert_endianness (T &a)
| Reverse endianness of a single variable.
unsigned long | time ()
| Return the value of a system timer, with a millisecond precision.
unsigned long | tic ()
| Start tic/toc timer for time measurement between code instructions.
unsigned long | toc ()
| End tic/toc timer and displays elapsed time from last call to tic().
void | sleep (const unsigned int milliseconds)
| Sleep for a given numbers of milliseconds.
unsigned int | wait (const unsigned int milliseconds)
| Wait for a given number of milliseconds since the last call to wait().
double | rand ()
| Return a random variable between [0,1] with respect to an uniform distribution.
double | crand ()
| Return a random variable between [-1,1] with respect to an uniform distribution.
double | grand ()
| Return a random variable following a gaussian distribution and a standard deviation of 1.
unsigned int | prand (const double z)
| Return a random variable following a Poisson distribution of parameter z.
template<typename T >
T | rol (const T a, const unsigned int n=1)
| Bitwise-rotate value on the left.
template<typename T >
T | ror (const T a, const unsigned int n=1)
| Bitwise-rotate value on the right.
template<typename T >
T | abs (const T a)
| Return absolute value of a value.
template<typename T >
T | sqr (const T val)
| Return square of a value.
int | xln (const int x)
| Return `1 + log_10(x)` of a value `x`.
template<typename t1 , typename t2 >
cimg::superset< t1, t2 >::type | min (const t1 &a, const t2 &b)
| Return the minimum between two values.
template<typename t1 , typename t2 , typename t3 >
cimg::superset2< t1, t2, t3 >::type | min (const t1 &a, const t2 &b, const t3 &c)
| Return the minimum between three values.
template<typename t1 , typename t2 , typename t3 , typename t4 >
cimg::superset3< t1, t2, t3, t4 >::type | min (const t1 &a, const t2 &b, const t3 &c, const t4 &d)
| Return the minimum between four values.
template<typename t1 , typename t2 >
cimg::superset< t1, t2 >::type | max (const t1 &a, const t2 &b)
| Return the maximum between two values.
template<typename t1 , typename t2 , typename t3 >
cimg::superset2< t1, t2, t3 >::type | max (const t1 &a, const t2 &b, const t3 &c)
| Return the maximum between three values.
template<typename t1 , typename t2 , typename t3 , typename t4 >
cimg::superset3< t1, t2, t3, t4 >::type | max (const t1 &a, const t2 &b, const t3 &c, const t4 &d)
| Return the maximum between four values.
template<typename T >
T | sign (const T x)
| Return the sign of a value.
template<typename T >
unsigned long | nearest_pow2 (const T x)
| Return the nearest power of 2 higher than given value.
double | sinc (const double x)
| Return the sinc of a given value.
template<typename T >
T | mod (const T &x, const T &m)
| Return the modulo of a value.
template<typename T >
T | minmod (const T a, const T b)
| Return the min-mod of two values.
double | log2 (const double x)
| Return base-2 logarithm of a value.
template<typename T >
T | round (const T x, const double y=1, const int rounding_type=0)
| Return rounded value.
char | uncase (const char x)
| Convert ascii character to lower case.
void | uncase (char *const str)
| Convert C-string to lower case.
double | atof (const char *const str)
| Read value in a C-string.
int | strncasecmp (const char *const str1, const char *const str2, const int l)
| Compare the first `l` characters of two C-strings, ignoring the case.
int | strcasecmp (const char *const str1, const char *const str2)
| Compare two C-strings, ignoring the case.
bool | strpare (char *const str, const char delimiter=' ', const bool is_symmetric=false, const bool is_iterative=false)
| Remove delimiters on the start and/or end of a C-string.
void | strescape (char *const str)
| Replace escape sequences in C-strings by their binary ascii values.
const char * | basename (const char *const str)
| Return the basename of a filename.
std::FILE * | fopen (const char *const path, const char *const mode)
| Open a file.
int | fclose (std::FILE *file)
| Close a file.
const char * | temporary_path (const char *const user_path=0, const bool reinit_path=false)
| Get/set path to store temporary files.
const char * | imagemagick_path (const char *const user_path=0, const bool reinit_path=false)
| Get/set path to the Program Files/ directory (Windows only).
const char * | graphicsmagick_path (const char *const user_path=0, const bool reinit_path=false)
| Get/set path to the GraphicsMagick's `gm` binary.
const char * | medcon_path (const char *const user_path=0, const bool reinit_path=false)
| Get/set path to the XMedcon's `medcon` binary.
const char * | ffmpeg_path (const char *const user_path=0, const bool reinit_path=false)
| Get/set path to the FFMPEG's `ffmpeg` binary.
const char * | gzip_path (const char *const user_path=0, const bool reinit_path=false)
| Get/set path to the `gzip` binary.
const char * | gunzip_path (const char *const user_path=0, const bool reinit_path=false)
| Get/set path to the `gzip` binary.
const char * | dcraw_path (const char *const user_path=0, const bool reinit_path=false)
| Get/set path to the `dcraw` binary.
const char * | wget_path (const char *const user_path=0, const bool reinit_path=false)
| Get/set path to the `wget` binary.
const char * | curl_path (const char *const user_path=0, const bool reinit_path=false)
| Get/set path to the `curl` binary.
const char * | split_filename (const char *const filename, char *const body=0)
| Split filename into two C-strings `body` and `extension`.
char * | number_filename (const char *const filename, const int number, const unsigned int n, char *const str)
| Generate a numbered version of a filename.
const char * | file_type (std::FILE *const file, const char *const filename)
| Try to guess format from an image file.
template<typename T >
int | fread (T *const ptr, const unsigned long nmemb, std::FILE *stream)
| Read data from file.
template<typename T >
int | fwrite (const T *ptr, const unsigned long nmemb, std::FILE *stream)
| Write data to file.
char * | load_network_external (const char *const filename, char *const filename_local)
| Load file from network as a local temporary file.
const char * | option (const char *const name, const int argc, const char *const *const argv, const char *const defaut, const char *const usage, const bool reset_static)
| Return options specified on the command line.
template<typename t >
int | dialog (const char *const title, const char *const msg, const char *const button1_label, const char *const button2_label, const char *const button3_label, const char *const button4_label, const char *const button5_label, const char *const button6_label, const CImg< t > &logo, const bool is_centered=false)
| Display a simple dialog box, and wait for the user's response.

## Variables

const unsigned int | keyESC = 1U
| Keycode for the `ESC` key (architecture-dependent).
const unsigned int | keyF1 = 2U
| Keycode for the `F1` key (architecture-dependent).
const unsigned int | keyF2 = 3U
| Keycode for the `F2` key (architecture-dependent).
const unsigned int | keyF3 = 4U
| Keycode for the `F3` key (architecture-dependent).
const unsigned int | keyF4 = 5U
| Keycode for the `F4` key (architecture-dependent).
const unsigned int | keyF5 = 6U
| Keycode for the `F5` key (architecture-dependent).
const unsigned int | keyF6 = 7U
| Keycode for the `F6` key (architecture-dependent).
const unsigned int | keyF7 = 8U
| Keycode for the `F7` key (architecture-dependent).
const unsigned int | keyF8 = 9U
| Keycode for the `F8` key (architecture-dependent).
const unsigned int | keyF9 = 10U
| Keycode for the `F9` key (architecture-dependent).
const unsigned int | keyF10 = 11U
| Keycode for the `F10` key (architecture-dependent).
const unsigned int | keyF11 = 12U
| Keycode for the `F11` key (architecture-dependent).
const unsigned int | keyF12 = 13U
| Keycode for the `F12` key (architecture-dependent).
const unsigned int | keyPAUSE = 14U
| Keycode for the `PAUSE` key (architecture-dependent).
const unsigned int | key1 = 15U
| Keycode for the `1` key (architecture-dependent).
const unsigned int | key2 = 16U
| Keycode for the `2` key (architecture-dependent).
const unsigned int | key3 = 17U
| Keycode for the `3` key (architecture-dependent).
const unsigned int | key4 = 18U
| Keycode for the `4` key (architecture-dependent).
const unsigned int | key5 = 19U
| Keycode for the `5` key (architecture-dependent).
const unsigned int | key6 = 20U
| Keycode for the `6` key (architecture-dependent).
const unsigned int | key7 = 21U
| Keycode for the `7` key (architecture-dependent).
const unsigned int | key8 = 22U
| Keycode for the `8` key (architecture-dependent).
const unsigned int | key9 = 23U
| Keycode for the `9` key (architecture-dependent).
const unsigned int | key0 = 24U
| Keycode for the `0` key (architecture-dependent).
const unsigned int | keyBACKSPACE = 25U
| Keycode for the `BACKSPACE` key (architecture-dependent).
const unsigned int | keyINSERT = 26U
| Keycode for the `INSERT` key (architecture-dependent).
const unsigned int | keyHOME = 27U
| Keycode for the `HOME` key (architecture-dependent).
const unsigned int | keyPAGEUP = 28U
| Keycode for the `PAGEUP` key (architecture-dependent).
const unsigned int | keyTAB = 29U
| Keycode for the `TAB` key (architecture-dependent).
const unsigned int | keyQ = 30U
| Keycode for the `Q` key (architecture-dependent).
const unsigned int | keyW = 31U
| Keycode for the `W` key (architecture-dependent).
const unsigned int | keyE = 32U
| Keycode for the `E` key (architecture-dependent).
const unsigned int | keyR = 33U
| Keycode for the `R` key (architecture-dependent).
const unsigned int | keyT = 34U
| Keycode for the `T` key (architecture-dependent).
const unsigned int | keyY = 35U
| Keycode for the `Y` key (architecture-dependent).
const unsigned int | keyU = 36U
| Keycode for the `U` key (architecture-dependent).
const unsigned int | keyI = 37U
| Keycode for the `I` key (architecture-dependent).
const unsigned int | keyO = 38U
| Keycode for the `O` key (architecture-dependent).
const unsigned int | keyP = 39U
| Keycode for the `P` key (architecture-dependent).
const unsigned int | keyDELETE = 40U
| Keycode for the `DELETE` key (architecture-dependent).
const unsigned int | keyEND = 41U
| Keycode for the `END` key (architecture-dependent).
const unsigned int | keyPAGEDOWN = 42U
| Keycode for the `PAGEDOWN` key (architecture-dependent).
const unsigned int | keyCAPSLOCK = 43U
| Keycode for the `CAPSLOCK` key (architecture-dependent).
const unsigned int | keyA = 44U
| Keycode for the `A` key (architecture-dependent).
const unsigned int | keyS = 45U
| Keycode for the `S` key (architecture-dependent).
const unsigned int | keyD = 46U
| Keycode for the `D` key (architecture-dependent).
const unsigned int | keyF = 47U
| Keycode for the `F` key (architecture-dependent).
const unsigned int | keyG = 48U
| Keycode for the `G` key (architecture-dependent).
const unsigned int | keyH = 49U
| Keycode for the `H` key (architecture-dependent).
const unsigned int | keyJ = 50U
| Keycode for the `J` key (architecture-dependent).
const unsigned int | keyK = 51U
| Keycode for the `K` key (architecture-dependent).
const unsigned int | keyL = 52U
| Keycode for the `L` key (architecture-dependent).
const unsigned int | keyENTER = 53U
| Keycode for the `ENTER` key (architecture-dependent).
const unsigned int | keySHIFTLEFT = 54U
| Keycode for the `SHIFTLEFT` key (architecture-dependent).
const unsigned int | keyZ = 55U
| Keycode for the `Z` key (architecture-dependent).
const unsigned int | keyX = 56U
| Keycode for the `X` key (architecture-dependent).
const unsigned int | keyC = 57U
| Keycode for the `C` key (architecture-dependent).
const unsigned int | keyV = 58U
| Keycode for the `V` key (architecture-dependent).
const unsigned int | keyB = 59U
| Keycode for the `B` key (architecture-dependent).
const unsigned int | keyN = 60U
| Keycode for the `N` key (architecture-dependent).
const unsigned int | keyM = 61U
| Keycode for the `M` key (architecture-dependent).
const unsigned int | keySHIFTRIGHT = 62U
| Keycode for the `SHIFTRIGHT` key (architecture-dependent).
const unsigned int | keyARROWUP = 63U
| Keycode for the `ARROWUP` key (architecture-dependent).
const unsigned int | keyCTRLLEFT = 64U
| Keycode for the `CTRLLEFT` key (architecture-dependent).
const unsigned int | keyAPPLEFT = 65U
| Keycode for the `APPLEFT` key (architecture-dependent).
const unsigned int | keyALT = 66U
| Keycode for the `ALT` key (architecture-dependent).
const unsigned int | keySPACE = 67U
| Keycode for the `SPACE` key (architecture-dependent).
const unsigned int | keyALTGR = 68U
| Keycode for the `ALTGR` key (architecture-dependent).
const unsigned int | keyAPPRIGHT = 69U
| Keycode for the `APPRIGHT` key (architecture-dependent).
const unsigned int | keyMENU = 70U
| Keycode for the `MENU` key (architecture-dependent).
const unsigned int | keyCTRLRIGHT = 71U
| Keycode for the `CTRLRIGHT` key (architecture-dependent).
const unsigned int | keyARROWLEFT = 72U
| Keycode for the `ARROWLEFT` key (architecture-dependent).
const unsigned int | keyARROWDOWN = 73U
| Keycode for the `ARROWDOWN` key (architecture-dependent).
const unsigned int | keyARROWRIGHT = 74U
| Keycode for the `ARROWRIGHT` key (architecture-dependent).
const unsigned int | keyPAD0 = 75U
| Keycode for the `PAD0` key (architecture-dependent).
const unsigned int | keyPAD1 = 76U
| Keycode for the `PAD1` key (architecture-dependent).
const unsigned int | keyPAD2 = 77U
| Keycode for the `PAD2` key (architecture-dependent).
const unsigned int | keyPAD3 = 78U
| Keycode for the `PAD3` key (architecture-dependent).
const unsigned int | keyPAD4 = 79U
| Keycode for the `PAD4` key (architecture-dependent).
const unsigned int | keyPAD5 = 80U
| Keycode for the `PAD5` key (architecture-dependent).
const unsigned int | keyPAD6 = 81U
| Keycode for the `PAD6` key (architecture-dependent).
const unsigned int | keyPAD7 = 82U
| Keycode for the `PAD7` key (architecture-dependent).
const unsigned int | keyPAD8 = 83U
| Keycode for the `PAD8` key (architecture-dependent).
const unsigned int | keyPAD9 = 84U
| Keycode for the `PAD9` key (architecture-dependent).
const unsigned int | keyPADADD = 85U
| Keycode for the `PADADD` key (architecture-dependent).
const unsigned int | keyPADSUB = 86U
| Keycode for the `PADSUB` key (architecture-dependent).
const unsigned int | keyPADMUL = 87U
| Keycode for the `PADMUL` key (architecture-dependent).
const unsigned int | keyPADDIV = 88U
| Keycode for the `PADDDIV` key (architecture-dependent).
const double | PI = 3.14159265358979323846
| Value of the mathematical constant PI.

## Detailed Description

Contains low-level functions and variables of the `CImg` Library.

Most of the functions and variables within this namespace are used by the `CImg` library for low-level operations. You may use them to access specific const values or environment variables internally used by `CImg`.

Warning:
  Never write `using namespace cimg_library::cimg;` in your source code. Lot of functions in the `cimg:: namespace` have the same names as standard C functions that may be defined in the global namespace `::`.

## Function Documentation

std::FILE * output | ( | std::FILE * | file | ) |

Get/set default output stream for the `CImg` library messages.

Parameters:

  file | Desired output stream. Set to `0` to get the currently used output stream only.

Returns:
  Currently used output stream.

void info | ( |  | ) |

Print informations about `CImg` environement variables.

Note:
  Output is done on the default output stream.

unsigned int& cimg_library::cimg::exception_mode | ( | const unsigned int | mode | ) |

Set current `CImg` exception mode.

The way error messages are handled by `CImg` can be changed dynamically, using this function.

Parameters:

  mode

  Desired exception mode. Possible values are:
  - `0`: Hide library messages (quiet mode).
  - `1`: Print library messages on the console.
  - `2`: Display library messages on a dialog window (default behavior).
  - `3`: Do as `1` + add extra debug warnings (slow down the code!).
  - `4`: Do as `2` + add extra debug warnings (slow down the code!).

unsigned int& cimg_library::cimg::exception_mode | ( |  | ) |

Return current `CImg` exception mode.

Note:
  By default, return the value of configuration macro `cimg_verbosity`

double eval | ( | const char *const | expression,
|  | const double | x,
|  | const double | y,
|  | const double | z,
|  | const double | c
| ) |  |

Evaluate math expression.

Parameters:

  expression | C-string describing the formula to evaluate.
  x | Value of the pre-defined variable `x`.
  y | Value of the pre-defined variable `y`.
  z | Value of the pre-defined variable `z`.
  c | Value of the pre-defined variable `c`.

Returns:
  Result of the formula evaluation.

Note:
  Set `expression` to `0` to keep evaluating the last specified `expression`.

Example

           const double
             res1 = cimg::eval("cos(x)^2+sin(y)^2",2,2),  // will return '1'.
             res2 = cimg::eval(0,1,1);                    // will return '1' too.

void cimg_library::cimg::warn | ( | const char *const | format,
|  |  | ...
| ) |  |

Display a warning message on the default output stream.

Parameters:

  format | C-string containing the format of the message, as with `std::printf()`.

Note:
  If configuration macro `cimg_strict_warnings` is set, this function throws a `CImgWarningException` instead.

Warning:
  As the first argument is a format string, it is highly recommended to write

             cimg::warn("%s",warning_message);

  instead of

             cimg::warn(warning_message);

  if `warning_message` can be arbitrary, to prevent nasty memory access.

int cimg_library::cimg::system | ( | const char *const | command,
|  | const char *const | module_name = `0`
| ) |  |

Parameters:

  command | C-string containing the command line to execute.
  module_name | Module name.

Returns:
  Status value of the executed command, whose meaning is OS-dependent.

Note:
  This function is similar to `std::system()` but it does not open an extra console windows on Windows-based systems.

bool cimg_library::cimg::endianness | ( |  | ) |

Return the endianness of the current architecture.

Returns:
  `false` for Little Endian or `true` for Big Endian.

void cimg_library::cimg::invert_endianness | ( | T *const | buffer,
|  | const unsigned long | size
| ) |  |

Reverse endianness of all elements in a memory buffer.

Parameters:

  [in,out] | buffer | Memory buffer whose endianness must be reversed.
  | size | Number of buffer elements to reverse.

T& cimg_library::cimg::invert_endianness | ( | T & | a | ) |

Reverse endianness of a single variable.

Parameters:

  [in,out] | a | Variable to reverse.

Returns:
  Reference to reversed variable.

unsigned long cimg_library::cimg::time | ( |  | ) |

Return the value of a system timer, with a millisecond precision.

Note:
  The timer does not necessarily starts from `0`.

unsigned long cimg_library::cimg::tic | ( |  | ) |

Start tic/toc timer for time measurement between code instructions.

Returns:
  Current value of the timer (same value as time()).

unsigned long cimg_library::cimg::toc | ( |  | ) |

End tic/toc timer and displays elapsed time from last call to tic().

Returns:
  Time elapsed (in ms) since last call to tic().

void cimg_library::cimg::sleep | ( | const unsigned int | milliseconds | ) |

Sleep for a given numbers of milliseconds.

Parameters:

  milliseconds | Number of milliseconds to wait for.

Note:
  This function frees the CPU ressources during the sleeping time. It can be used to temporize your program properly, without wasting CPU time.

unsigned int cimg_library::cimg::wait | ( | const unsigned int | milliseconds | ) |

Wait for a given number of milliseconds since the last call to wait().

Parameters:

  milliseconds | Number of milliseconds to wait for.

Returns:
  Number of milliseconds elapsed since the last call to wait().

Note:
  Same as sleep() with a waiting time computed with regard to the last call of wait(). It may be used to temporize your program properly, without wasting CPU time.

T cimg_library::cimg::mod | ( | const T & | x,
|  | const T & | m
| ) |  |

Return the modulo of a value.

Parameters:

  x | Input value.
  m | Modulo value.

Note:
  This modulo function accepts negative and floating-points modulo numbers, as well as variables of any type.

T cimg_library::cimg::minmod | ( | const T | a,
|  | const T | b
| ) |  |

Return the min-mod of two values.

Note:
  minmod(`a`,`b`) is defined to be:
  - minmod(`a`,`b`) = min(`a`,`b`), if `a` and `b` have the same sign.
  - minmod(`a`,`b`) = 0, if `a` and `b` have different signs.

T cimg_library::cimg::round | ( | const T | x,
|  | const double | y = `1`,
|  | const int | rounding_type = `0`
| ) |  |

Return rounded value.

Parameters:

  x | Value to be rounded.
  y | Rounding precision.
  rounding_type | Type of rounding operation (`0` = nearest, `-1` = backward, `1` = forward).

Returns:
  Rounded value, having the same type as input value `x`.

double cimg_library::cimg::atof | ( | const char *const | str | ) |

Read value in a C-string.

Parameters:

  str | C-string containing the float value to read.

Returns:
  Read value.

Note:
  Same as `std::atof()` extended to manage the retrieval of fractions from C-strings, as in "1/2".

int cimg_library::cimg::strncasecmp | ( | const char *const | str1,
|  | const char *const | str2,
|  | const int | l
| ) |  |

Compare the first `l` characters of two C-strings, ignoring the case.

Parameters:

  str1 | C-string.
  str2 | C-string.
  l | Number of characters to compare.

Returns:
  `0` if the two strings are equal, something else otherwise.

Note:
  This function has to be defined since it is not provided by all C++-compilers (not ANSI).

int cimg_library::cimg::strcasecmp | ( | const char *const | str1,
|  | const char *const | str2
| ) |  |

Compare two C-strings, ignoring the case.

Parameters:

  str1 | C-string.
  str2 | C-string.

Returns:
  `0` if the two strings are equal, something else otherwise.

Note:
  This function has to be defined since it is not provided by all C++-compilers (not ANSI).

bool cimg_library::cimg::strpare | ( | char *const | str,
|  | const char | delimiter = `' '`,
|  | const bool | is_symmetric = `false`,
|  | const bool | is_iterative = `false`
| ) |  |

Remove delimiters on the start and/or end of a C-string.

Parameters:

  [in,out] | str | C-string to work with (modified at output).
  | delimiter | Delimiter character code to remove.
  | is_symmetric | Tells if the removal is done only if delimiters are symmetric (both at the beginning and the end of `s`).
  | is_iterative | Tells if the removal is done if several iterations are possible.

Returns:
  `true` if delimiters have been removed, `false` otherwise.

void cimg_library::cimg::strescape | ( | char *const | str | ) |

Replace escape sequences in C-strings by their binary ascii values.

Parameters:

  [in,out] | str | C-string to work with (modified at output).

std::FILE* cimg_library::cimg::fopen | ( | const char *const | path,
|  | const char *const | mode
| ) |  |

Open a file.

Parameters:

  path | Path of the filename to open.
  mode | C-string describing the opening mode.

Returns:
  Opened file.

Note:
  Same as `std::fopen()` but throw a `CImgIOException` when the specified file cannot be opened, instead of returning `0`.

int cimg_library::cimg::fclose | ( | std::FILE * | file | ) |

Close a file.

Parameters:

  file | File to close.

Returns:
  `0` if file has been closed properly, something else otherwise.

Note:
  Same as `std::fclose()` but display a warning message if the file has not been closed properly.

const char* cimg_library::cimg::temporary_path | ( | const char *const | user_path = `0`,
|  | const bool | reinit_path = `false`
| ) |  |

Get/set path to store temporary files.

Parameters:

  user_path | Specified path, or `0` to get the path currently used.
  reinit_path | Force path to be recalculated (may take some time).

Returns:
  Path where temporary files can be saved.

const char* cimg_library::cimg::imagemagick_path | ( | const char *const | user_path = `0`,
|  | const bool | reinit_path = `false`
| ) |  |

Get/set path to the Program Files/ directory (Windows only).

Parameters:

  user_path | Specified path, or `0` to get the path currently used.
  reinit_path | Force path to be recalculated (may take some time).

Returns:
  Path containing the program files. Get/set path to the ImageMagick's `convert` binary.

Parameters:

  user_path | Specified path, or `0` to get the path currently used.
  reinit_path | Force path to be recalculated (may take some time).

Returns:
  Path containing the `convert` binary.

const char* cimg_library::cimg::graphicsmagick_path | ( | const char *const | user_path = `0`,
|  | const bool | reinit_path = `false`
| ) |  |

Get/set path to the GraphicsMagick's `gm` binary.

Parameters:

  user_path | Specified path, or `0` to get the path currently used.
  reinit_path | Force path to be recalculated (may take some time).

Returns:
  Path containing the `gm` binary.

const char* cimg_library::cimg::medcon_path | ( | const char *const | user_path = `0`,
|  | const bool | reinit_path = `false`
| ) |  |

Get/set path to the XMedcon's `medcon` binary.

Parameters:

  user_path | Specified path, or `0` to get the path currently used.
  reinit_path | Force path to be recalculated (may take some time).

Returns:
  Path containing the `medcon` binary.

const char* cimg_library::cimg::ffmpeg_path | ( | const char *const | user_path = `0`,
|  | const bool | reinit_path = `false`
| ) |  |

Get/set path to the FFMPEG's `ffmpeg` binary.

Parameters:

  user_path | Specified path, or `0` to get the path currently used.
  reinit_path | Force path to be recalculated (may take some time).

Returns:
  Path containing the `ffmpeg` binary.

const char* cimg_library::cimg::gzip_path | ( | const char *const | user_path = `0`,
|  | const bool | reinit_path = `false`
| ) |  |

Get/set path to the `gzip` binary.

Parameters:

  user_path | Specified path, or `0` to get the path currently used.
  reinit_path | Force path to be recalculated (may take some time).

Returns:
  Path containing the `gzip` binary.

const char* cimg_library::cimg::gunzip_path | ( | const char *const | user_path = `0`,
|  | const bool | reinit_path = `false`
| ) |  |

Get/set path to the `gzip` binary.

Parameters:

  user_path | Specified path, or `0` to get the path currently used.
  reinit_path | Force path to be recalculated (may take some time).

Returns:
  Path containing the `gunzip` binary.

const char* cimg_library::cimg::dcraw_path | ( | const char *const | user_path = `0`,
|  | const bool | reinit_path = `false`
| ) |  |

Get/set path to the `dcraw` binary.

Parameters:

  user_path | Specified path, or `0` to get the path currently used.
  reinit_path | Force path to be recalculated (may take some time).

Returns:
  Path containing the `dcraw` binary.

const char* cimg_library::cimg::wget_path | ( | const char *const | user_path = `0`,
|  | const bool | reinit_path = `false`
| ) |  |

Get/set path to the `wget` binary.

Parameters:

  user_path | Specified path, or `0` to get the path currently used.
  reinit_path | Force path to be recalculated (may take some time).

Returns:
  Path containing the `wget` binary.

const char* cimg_library::cimg::curl_path | ( | const char *const | user_path = `0`,
|  | const bool | reinit_path = `false`
| ) |  |

Get/set path to the `curl` binary.

Parameters:

  user_path | Specified path, or `0` to get the path currently used.
  reinit_path | Force path to be recalculated (may take some time).

Returns:
  Path containing the `curl` binary.

const char* cimg_library::cimg::file_type | ( | std::FILE *const | file,
|  | const char *const | filename
| ) |  |

Try to guess format from an image file.

Parameters:

  file | Input file (can be `0` if `filename` is set).
  filename | Filename, as a C-string (can be `0` if `file` is set).

Returns:
  C-string containing the guessed file format, or `0` if nothing has been guessed.

int cimg_library::cimg::fread | ( | T *const | ptr,
|  | const unsigned long | nmemb,
|  | std::FILE * | stream
| ) |  |

Read data from file.

Parameters:

  [out] | ptr | Pointer to memory buffer that will contain the binary data read from file.
  | nmemb | Number of elements to read.
  | stream | File to read data from.

Returns:
  Number of read elements.

Note:
  Same as `std::fread()` but may display warning message if all elements could not be read.

int cimg_library::cimg::fwrite | ( | const T * | ptr,
|  | const unsigned long | nmemb,
|  | std::FILE * | stream
| ) |  |

Write data to file.

Parameters:

  | ptr | Pointer to memory buffer containing the binary data to write on file.
  | nmemb | Number of elements to write.
  [out] | stream | File to write data on.

Returns:
  Number of written elements.

Note:
  Similar to `std::fwrite` but may display warning messages if all elements could not be written.

char* cimg_library::cimg::load_network_external | ( | const char *const | filename,
|  | char *const | filename_local
| ) |  |

Load file from network as a local temporary file.

Parameters:

  | filename | Filename, as a C-string.
  [out] | filename_local | C-string containing the path to a local copy of `filename`.

Returns:
  Value of `filename_local`.

Note:
  Use external binaries `wget` or `curl` to perform. You must have one of these tools installed to be able to use this function.

int cimg_library::cimg::dialog | ( | const char *const | title,
|  | const char *const | msg,
|  | const char *const | button1_label,
|  | const char *const | button2_label,
|  | const char *const | button3_label,
|  | const char *const | button4_label,
|  | const char *const | button5_label,
|  | const char *const | button6_label,
|  | const CImg< t > & | logo,
|  | const bool | is_centered = `false`
| ) |  |

Display a simple dialog box, and wait for the user's response.

Parameters:

  title | Title of the dialog window.
  msg | Main message displayed inside the dialog window.
  button1_label | Label of the 1st button.
  button2_label | Label of the 2nd button (`0` to hide button).
  button3_label | Label of the 3rd button (`0` to hide button).
  button4_label | Label of the 4th button (`0` to hide button).
  button5_label | Label of the 5th button (`0` to hide button).
  button6_label | Label of the 6th button (`0` to hide button).
  logo | Image logo displayed at the left of the main message.
  is_centered | Tells if the dialog window must be centered on the screen.

Returns:
  Indice of clicked button (from `0` to `5`), or `-1` if the dialog window has been closed by the user.

Note:
  - Up to 6 buttons can be defined in the dialog window.
  - The function returns when a user clicked one of the button or closed the dialog window.
  - If a button text is set to 0, the corresponding button (and the followings) will not appear in the dialog box. At least one button must be specified.