ftp.nice.ch/pub/next/graphics/3d/geomview.1.4.1.s.tar.gz#/Geomview/src/bin/pssnap/sgi/pssnap.main.c

This is pssnap.main.c in view mode; [Download] [Up]

/* 
 * pssnap.main.c
 * author:  Celeste Fowler
 * date:  June 12, 1992
 */

#include <stdio.h>
#include "geom.h"
#include "polylistP.h"
#include "camera.h"
#include "forms.h"
#include "pssnap.h"

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

int flag = PS_EDGES | PS_FACES | PS_COLOR;
FL_FORM *MainForm;
FL_OBJECT *SaveButton, *QuitButton, *FaceDrawButton, *EdgeDrawButton,
  *ColorDrawButton, *FileInput;

void SaveProc(FL_OBJECT *obj, long val);
void QuitProc(FL_OBJECT *obj, long val);
void OptionsProc(FL_OBJECT *obj, long val);

main(int argc, char *argv[]) {
  foreground();

  MainForm = fl_bgn_form(FL_NO_BOX, 300, 200);
  fl_add_box(FL_UP_BOX, 0, 0, 300, 200, "");

  SaveButton = fl_add_lightbutton(FL_PUSH_BUTTON, 25, 20, 100, 40,
			     "Save");
  fl_set_call_back(SaveButton, SaveProc, 0);

  QuitButton = fl_add_button(FL_NORMAL_BUTTON, 175, 20, 100, 40,
			     "Quit");
  fl_set_call_back(QuitButton, QuitProc, 0);

  FaceDrawButton = fl_add_lightbutton(FL_PUSH_BUTTON, 0, 160, 100, 40,
				 "Draw Faces");
  fl_set_object_lsize(FaceDrawButton, FL_SMALL_FONT); 
  fl_set_call_back(FaceDrawButton, OptionsProc, PS_FACES);
  fl_set_button(FaceDrawButton, 1);

  EdgeDrawButton = fl_add_lightbutton(FL_PUSH_BUTTON, 100, 160, 100, 40,
				"Draw Edges");
  fl_set_object_lsize(EdgeDrawButton, FL_SMALL_FONT); 
  fl_set_call_back(EdgeDrawButton, OptionsProc, PS_EDGES);
  fl_set_button(EdgeDrawButton, 1);

  ColorDrawButton = fl_add_lightbutton(FL_PUSH_BUTTON, 200, 160, 100, 40,
				  "Use Color");
  fl_set_object_lsize(ColorDrawButton, FL_SMALL_FONT); 
  fl_set_call_back(ColorDrawButton, OptionsProc, PS_COLOR);
  fl_set_button(ColorDrawButton, 1);

  FileInput = fl_add_input(FL_NORMAL_INPUT, 25, 80, 250, 40, 
			   "Filename:");
  fl_set_input(FileInput, "snap.ps");
  fl_set_object_align(FileInput, FL_ALIGN_TOP);
  fl_end_form();
  fl_show_form(MainForm, FL_PLACE_SIZE, TRUE, "PS Snapshot");
    
  while(1) fl_do_forms();

}


void SaveProc(FL_OBJECT *obj, long val)
{
  int i;
  FILE *outfile = stdout, *infile = stdin;
  Camera *c;
  Geom *o, *onew;
 
  /* Get the current object. */
  printf("(write geometry - targetgeom )\n");
  fflush(stdout);
  
  if ((outfile = fopen(fl_get_input(FileInput), "w")) == NULL) {
    OOGLError(0, "Unable to open output file %s", fl_get_input(FileInput));
    exit(1);
  }

  o = GeomFLoad(stdin, NULL);
  
  printf("(write camera - targetcam)\n");
  fflush(stdout);
  
  c = CamFLoad(NULL, stdin, "stdin");  
  
  /* Do the viewing transformations. */
  onew = PolyProject(o, c);
  GeomDelete(o);

  PolyToPSInit(outfile, flag);
  PolyToPS(onew, outfile, flag);
  fprintf(outfile, "showpage\n");
 
  fclose(outfile);

  GeomDelete(onew);

  fl_set_button(SaveButton, 0);

}  
  

void QuitProc(FL_OBJECT *obj, long val) 
{
  exit(0);
}


void OptionsProc(FL_OBJECT *obj, long val)
{
  flag ^= val;
} 





These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.