Ignore:
Timestamp:
Jun 23, 2005, 12:06:42 AM (17 years ago)
Author:
Jean-Yves Lamoureux
Message:
  • Added Null driver and html3 exporter.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/src/graphics.c

    r486 r487  
    404404        break;
    405405#endif
     406#if defined(USE_NULL)
     407    case CACA_DRIVER_NULL:
     408        /* Nothing to do */
     409        break;
     410#endif
    406411    default:
    407412        break;
     
    491496#if defined(USE_GL)
    492497    case CACA_DRIVER_GL:
     498        break;
     499#endif
     500#if defined(USE_NULL)
     501    case CACA_DRIVER_NULL:
    493502        break;
    494503#endif
     
    590599#if defined(USE_GL)
    591600    case CACA_DRIVER_GL:
     601        break;
     602#endif
     603#if defined(USE_NULL)
     604    case CACA_DRIVER_NULL:
    592605        break;
    593606#endif
     
    10481061    else
    10491062#endif
    1050 
     1063#if defined(USE_NULL)
     1064      if(_caca_driver == CACA_DRIVER_NULL)
     1065        {
     1066          if(getenv("CACA_GEOMETRY") && *(getenv("CACA_GEOMETRY")))
     1067            sscanf(getenv("CACA_GEOMETRY"),
     1068                   "%ux%u", &_caca_width, &_caca_height); 
     1069          if(!_caca_width)
     1070            _caca_width = 80;
     1071          if(!_caca_height)
     1072            _caca_height = 32;
     1073        }
     1074      else
     1075#endif
    10511076    {
    10521077        /* Dummy */
     
    11271152        {
    11281153          glutDestroyWindow(gl_window);
     1154        }
     1155      else
     1156#endif
     1157#if defined(USE_NULL)
     1158      if(_caca_driver == CACA_DRIVER_NULL)
     1159        {
     1160          /* I'm bored to write 'nothing to do'.
     1161           * So I don't.
     1162           */
    11291163        }
    11301164      else
     
    15101544else
    15111545#endif
     1546#if defined(USE_NULL)
     1547      if(_caca_driver == CACA_DRIVER_NULL)
     1548        {
     1549          /* Do I told you about my cat ? */
     1550        }
     1551#endif
    15121552    {
    15131553        /* Dummy */
     
    16301670    }
    16311671    else
     1672#endif
     1673#if defined(USE_NULL)
     1674    if(_caca_driver == CACA_DRIVER_NULL)
     1675    {
     1676      /* \_o< pOaK */
     1677      /* By the way, we should never reach this,
     1678       * as events are not handled
     1679       */
     1680    }
    16321681#endif
    16331682    {
     
    18431892}
    18441893
     1894/** \brief Generate HTML3 representation of current image.
     1895 *
     1896 *  This function generates and returns the HTML3 representation of
     1897 *  the current image. It is way bigger than caca_get_html(), but
     1898 *  permits viewing in old browsers (or limited ones such as links)
     1899 *
     1900 */
     1901char* caca_get_html3(void)
     1902{
     1903  char *buffer;
     1904  unsigned int x,y;
     1905
     1906  /* 13000 -> css palette
     1907     40 -> max size used for a pixel (plus 10, never know)*/
     1908
     1909  buffer = malloc((13000 + ((_caca_width*_caca_height)*40))*sizeof(char));
     1910 
     1911
     1912  /* Table */
     1913  sprintf(buffer, "<table cols='%d' cellpadding='0' cellspacing='0'>\n", caca_get_height());
     1914
     1915  for(y=0;y<_caca_height;y++)
     1916    {
     1917      sprintf(buffer,
     1918              "%s<tr>",buffer);
     1919
     1920      for(x=0;x<_caca_width;x++)
     1921        {
     1922          int len;
     1923          int i;
     1924          uint8_t *attr = cache_attr + x + y * _caca_width;
     1925
     1926          /* Use colspan option to factorize cells with same attributes
     1927             (see below) */
     1928          len=1;
     1929          while(x + len < _caca_width
     1930                && (attr[len]>>4) == (attr[0]>>4) &&
     1931                (attr[len]&0x0f) == (attr[0]&0x0f))
     1932            len++;
     1933         
     1934          if(len==1)
     1935            {
     1936              sprintf(buffer,
     1937                      "%s<td bgcolor=#%06X ><font color='#%06X'>%c</font></td>", buffer,
     1938                      html_palette[cache_attr[x+y*caca_get_width()]>>4],
     1939                      html_palette[cache_attr[x+y*caca_get_width()]&0x0f],
     1940                      cache_char[x+y*caca_get_width()]);
     1941            }
     1942          else
     1943            {
     1944              sprintf(buffer,
     1945                      "%s<td bgcolor=#%06X colspan=%d><font color='#%06X'>",buffer,
     1946                      html_palette[cache_attr[x+y*caca_get_width()]>> 4],
     1947                      len+1,
     1948                      html_palette[cache_attr[x+y*caca_get_width()]&0x0f]);
     1949             
     1950              for(i=0;i<len;i++)
     1951                {
     1952                  if(cache_char[x+y*caca_get_width()]!=' ')
     1953                    sprintf(buffer, "%s%c", buffer, cache_char[x+y*caca_get_width()]);
     1954                  else
     1955                    sprintf(buffer, "%s&nbsp;", buffer);
     1956                  x++;
     1957                }
     1958              sprintf(buffer, "%s</font></td>", buffer);
     1959             
     1960            }
     1961
     1962        }
     1963      sprintf(buffer, "%s</tr>\n",buffer);
     1964    }
     1965
     1966  /* Footer */
     1967  sprintf(buffer, "%s</table>\n",buffer);
     1968
     1969  /* Crop to really used size */
     1970  buffer = realloc(buffer, (strlen(buffer)+1) * sizeof(char));
     1971
     1972  return buffer;
     1973}
     1974
    18451975
    18461976static int const irc_palette[] =
Note: See TracChangeset for help on using the changeset viewer.