Blame contrib/gcc/gtk-mng-view/dummy.c

Packit 93f41a
/*
Packit 93f41a
 *  Very simple program, that has been used by us
Packit 93f41a
 *  (V. Babin <babin :at: users.sourceforge.net> and
Packit 93f41a
 *   S. Kondrat <valiska :at: users.sourceforge.net>)
Packit 93f41a
 *  during toying with libmng (http://www.libmng.com)
Packit 93f41a
 *
Packit 93f41a
 *  License: GPL :-))
Packit 93f41a
 *
Packit 93f41a
 *  7 July 2001:  added key-press/button-press handling to exit viewer without
Packit 93f41a
 *                window-manager help; added libmng version info [Greg Roelofs]
Packit 93f41a
 */
Packit 93f41a
Packit 93f41a
#include <unistd.h>
Packit 93f41a
#include <sys/types.h>
Packit 93f41a
#include <sys/stat.h>
Packit 93f41a
#include <fcntl.h>
Packit 93f41a
#include <errno.h>
Packit 93f41a
#include <gtk/gtk.h>
Packit 93f41a
#include "gtk-mng-view.h"
Packit 93f41a
Packit 93f41a
#define BLOCK_SIZE  4096
Packit 93f41a
Packit 93f41a
static guint
Packit 93f41a
read_file (const gchar* file_name, guchar ** ptr)
Packit 93f41a
{
Packit 93f41a
  gint fd;
Packit 93f41a
  guint size = 0;
Packit 93f41a
  guint bytes_read = 0;
Packit 93f41a
Packit 93f41a
  if ((fd = open (file_name, O_RDONLY)) == -1)
Packit 93f41a
    {
Packit 93f41a
      perror (file_name);
Packit 93f41a
      * ptr = NULL; 
Packit 93f41a
      return 0;
Packit 93f41a
    }
Packit 93f41a
Packit 93f41a
  * ptr = g_new (guchar, BLOCK_SIZE);
Packit 93f41a
  while ((bytes_read = read (fd, * ptr + size, BLOCK_SIZE)))
Packit 93f41a
    {
Packit 93f41a
      size += bytes_read;
Packit 93f41a
      * ptr = (guchar *) g_realloc (* ptr, size + BLOCK_SIZE);
Packit 93f41a
    }
Packit 93f41a
  close (fd);
Packit 93f41a
Packit 93f41a
  * ptr = (guchar *) g_realloc (* ptr, size);
Packit 93f41a
  return size;
Packit 93f41a
}
Packit 93f41a
Packit 93f41a
int
Packit 93f41a
main (int argc, char ** argv)
Packit 93f41a
{
Packit 93f41a
  GtkMngView * mng_view;
Packit 93f41a
  GtkWidget * window;
Packit 93f41a
  GtkWidget * align;
Packit 93f41a
  GtkWidget * frame;
Packit 93f41a
  guchar * mng_data = NULL;
Packit 93f41a
  guint mng_data_size;
Packit 93f41a
Packit 93f41a
  if (argc < 2)
Packit 93f41a
    {
Packit 93f41a
      g_print ("Usage:  %s <file.mng>\n\n", argv[0]);
Packit 93f41a
Packit 93f41a
      g_print ("   Compiled with GTK+ %d.%d.%d; using GTK+ %d.%d.%d.\n",
Packit 93f41a
        GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION,
Packit 93f41a
        gtk_major_version, gtk_minor_version, gtk_micro_version);
Packit 93f41a
#ifdef GDK_PIXBUF_VERSION
Packit 93f41a
      g_print ("   Compiled with gdk-pixbuf %s; using gdk-pixbuf %s.\n",
Packit 93f41a
        GDK_PIXBUF_VERSION, gdk_pixbuf_version);
Packit 93f41a
#endif
Packit 93f41a
      g_print ("   Compiled with libmng %s; using libmng %s.\n",
Packit 93f41a
        MNG_VERSION_TEXT, mng_version_text());
Packit 93f41a
      g_print ("   Compiled with zlib %s; using zlib %s.\n",
Packit 93f41a
        ZLIB_VERSION, zlib_version);
Packit 93f41a
#ifdef JPEG_LIB_VERSION
Packit 93f41a
        {
Packit 93f41a
          int major = JPEG_LIB_VERSION / 10;
Packit 93f41a
          int minor = JPEG_LIB_VERSION % 10;
Packit 93f41a
          char minoralpha[2];
Packit 93f41a
Packit 93f41a
          if (minor)
Packit 93f41a
            {
Packit 93f41a
              minoralpha[0] = (char)(minor - 1 + 'a');
Packit 93f41a
              minoralpha[1] = '\0';
Packit 93f41a
            }
Packit 93f41a
          else
Packit 93f41a
              minoralpha[0] = '\0';
Packit 93f41a
          g_print ("   Compiled with libjpeg %d%s.\n", major, minoralpha);
Packit 93f41a
        }
Packit 93f41a
#endif
Packit 93f41a
      g_print ("\nPress Esc or Q, or click mouse button, to quit.\n");
Packit 93f41a
      return 1;
Packit 93f41a
    }
Packit 93f41a
Packit 93f41a
  mng_data_size = read_file (* (argv + 1), &mng_data);
Packit 93f41a
Packit 93f41a
  if (mng_data == NULL)
Packit 93f41a
    return 1;
Packit 93f41a
Packit 93f41a
  gtk_init (&argc, &argv);
Packit 93f41a
  gdk_rgb_init ();
Packit 93f41a
  gdk_rgb_set_verbose (TRUE);
Packit 93f41a
  gtk_widget_set_default_visual (gdk_rgb_get_visual ());
Packit 93f41a
  gtk_widget_set_default_colormap (gdk_rgb_get_cmap ());
Packit 93f41a
Packit 93f41a
  window = gtk_widget_new (GTK_TYPE_WINDOW,
Packit 93f41a
			   "GtkWindow::type", GTK_WINDOW_TOPLEVEL,
Packit 93f41a
			   "GtkWindow::title", "MNG animation",
Packit 93f41a
			   "GtkContainer::border_width", 5,
Packit 93f41a
			   NULL);
Packit 93f41a
  gtk_signal_connect (GTK_OBJECT (window), "delete_event",
Packit 93f41a
		      GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
Packit 93f41a
  gtk_signal_connect (GTK_OBJECT (window), "destroy",
Packit 93f41a
		      GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
Packit 93f41a
Packit 93f41a
  /* any keypress (e.g., Esc or Q) or mouse-button click will quit viewer */
Packit 93f41a
  gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
Packit 93f41a
		      GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
Packit 93f41a
  gtk_widget_add_events(window, GDK_BUTTON_PRESS_MASK);
Packit 93f41a
  gtk_signal_connect (GTK_OBJECT (window), "button_press_event",
Packit 93f41a
		      GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
Packit 93f41a
Packit 93f41a
  align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
Packit 93f41a
  gtk_container_add (GTK_CONTAINER (window), align);
Packit 93f41a
  frame = gtk_frame_new (NULL);
Packit 93f41a
  gtk_container_add (GTK_CONTAINER (align), frame);
Packit 93f41a
Packit 93f41a
  /* actually it */
Packit 93f41a
  mng_view = GTK_MNG_VIEW (gtk_mng_view_new ());
Packit 93f41a
  gtk_container_add (GTK_CONTAINER (frame), GTK_WIDGET (mng_view));
Packit 93f41a
Packit 93f41a
  gtk_mng_view_load_mng_from_memory (mng_view, mng_data, mng_data_size);
Packit 93f41a
  g_free (mng_data);
Packit 93f41a
Packit 93f41a
  /* rest in piece */
Packit 93f41a
  gtk_widget_show_all (window);
Packit 93f41a
  gtk_main ();
Packit 93f41a
Packit 93f41a
  return 0;
Packit 93f41a
}