⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 general.c

📁 This contains Graphic gems code
💻 C
字号:
/* * This software is copyrighted as noted below.  It may be freely copied, * modified, and redistributed, provided that the copyright notice is * preserved on all copies. * * There is no warranty or other guarantee of fitness for this software, * it is provided solely "as is".  Bug reports or fixes may be sent * to the author, who may or may not act on them as he desires. * * You may not include this software in a program or other software product * without supplying the source, or without informing the end-user that the * source is available for no extra charge. * * If you modify this software, you should include a notice giving the * name of the person performing the modification, the date of modification, * and the reason for such modification. *//* * general.c - general ( non clasified ) functions. * * Author:      Raul Rivero *              Mathematics Dept. *              University of Oviedo * Date:        Sat Jan 4 1992 * Copyright (c) 1992, Raul Rivero * */#include "lug.h"#include "lugfnts.h"int LUGverbose = 0;/* * Return the number of bits ( -1 ) to represent a given * number of colors ( ex: 256 colors => 7 ). */no_bits( colors )int colors;{  register int bits= 0;  colors--;  while ( colors >> bits )    bits++;  return (bits-1);}/* * Like basename command. */char *basename(string, suffix)char *string;char *suffix;{  char *st_ptr= string;  char *su_ptr= suffix;  /*   * Pointers to the end of strings.   */  while (*st_ptr)    st_ptr++;  while (*su_ptr)    su_ptr++;  /*   * Ahora los vamos retrasando hasta que sean distintas   * ( y en el string metemos un cero ).   */  while ( *st_ptr == *su_ptr )    st_ptr--, su_ptr--;  /* The end of the string */  *(++st_ptr)= 0;  return( string );}short *bytetoshort( in, out, size )byte *in;short *out;int size;{  short *ptr;  /*   * If the output buffer is NULL then we need allocate   * memory, so ...   */  if ( out == NULL ) {    ptr = out = (short *) Malloc( size * sizeof(short) );  }else ptr = out;  while ( size-- ) {    *ptr++ = *in++;  }  return out;}byte *shorttobyte( in, out, size )short *in;byte *out;int size;{  byte *ptr;  /*   * If the output buffer is NULL then we need allocate   * memory, so ...   */  if ( out == NULL ) {    ptr = out = (byte *) Malloc( size );  }else ptr = out;  while ( size-- ) {    *ptr++ = *in++;  }  return out;}byte *floattobyte( in, out, size )float *in;byte *out;int size;{  byte *ptr;  /*   * If the output buffer is NULL then we need allocate   * memory, so ...   */  if ( out == NULL ) {    ptr = out = (byte *) Malloc( size );  }else ptr = out;  while ( size-- ) {    *ptr++ = (byte) (255. * *in++);  }  return out;}float *bytetofloat( in, out, size )float *out;byte *in;int size;{  float *ptr;  /*   * If the output buffer is NULL then we need allocate   * memory, so ...   */  if ( out == NULL ) {    ptr = out = (float *) Malloc( size * sizeof(float));  }  while ( size-- ) {    *ptr++ = ((float)*in++) / 255.;  }  return out;}Atoi( string )char *string;{  int aux = -1234;  sscanf( string, "%d", &aux );  if ( aux == -1234 )    error( 0 );  return aux;}doubleAtod( string )char *string;{  double aux = -1234.;  sscanf( string, "%lf", &aux );  if ( aux == -1234. )    error( 0 );  return aux;}isnumber( c )char *c;{  while ( *c )    if ( !isdigit(*c++) )      return 0;  return 1;}/* * Compress and uncompress subroutines. */Uncompress(name, aux_file)char *name, *aux_file;{#ifndef MSDOS  int pid, handle;  if ( pid = fork() ) {    /*     * Parent wait until the REAL 'end of days'     * of the child.     */    do{    }while( pid != wait(NULL) );  }else {    handle = creat( aux_file, 0644 );    close( 1 );    dup( handle );#ifdef USE_GNU_GZIP    execlp( "gzip", "gzip", "-dc", name, 0 );#else    execlp( "compress", "compress", "-dc", name, 0 );#endif  /* USE_GNU_GZIP */  }#else  /* MSDOS */  int handle;  char cmd[132];    handle = creat( aux_file, 0644 );  close( 1 );#ifdef USE_GNU_GZIP  sprintf( cmd, "gzip -dc %s", aux_file );#else  sprintf( cmd, "compress -dc %s", aux_file );#endif  /* USE_GNU_GZIP */  dup( handle );  system( cmd );#endif  /* MSDOS */}Compress(name)char *name;{#ifndef MSDOS  int pid;  if ( pid = fork() ) {    /*     * Parent wait until the REAL 'end of days'     * of the child.     */    do{    }while( pid != wait(NULL) );  }else {    /*     * Lets go baby ...     */#ifdef USE_GNU_GZIP    execlp( "gzip", "gzip", "-9", name, 0 );#else    execlp( "compress", "compress", name, 0 );#endif  /* USE_GNU_GZIP */  }#else  /* MSDOS */  char cmd[132];#ifdef USE_GNU_GZIP  sprintf( cmd, "gzip -9 %s", name );#else  sprintf( cmd, "compress %s", name );#endif  /* USE_GNU_GZIP */  system( cmd );#endif  /* MSDOS */}compute_levels( no_colors )int no_colors;{  int n = 7;  do {    n--;  }while ( n*n*n > no_colors );  return n;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -