/*
Copyright Notice:
	Copyright 1990 Robert C. Hood
	This software is distributed "as is" without warranty.  Use this software at your OWN RISK.  Source may be distributed freely, at NO CHARGE, but must be accompanied by this documentation and copyright notice.
*/

#include	<stdio.h>
#import 	"HipsImage.h"
#import 	"HipsApp.h"
#import 	"HipsView.h"


/**
 **
 ** IMPLEMENTATION SECTION
 **
 **/

@implementation HipsView : View
{
}

+new
{
  self = [super new];
}


-open: (char *)fileName file: (char *) file
{
	char	tstring[500];
	double	xpos, ypos;

  thisview = self;

  if ((fp = fopen (fileName, "rb")) == 0) {
    NXRunAlertPanel("HIPS ERROR","Can't open %s",NULL,NULL,NULL,fileName);
    [self free];
    return self;
  }
  if ((hipsImage = [HipsImage getimagefromfile: fp]) == NULL) {
    NXRunAlertPanel("HIPS ERROR","Error reading image header",NULL,NULL,NULL);
    [self free];
    return self;
  }
  xsize = [hipsImage getcols];
  ysize = [hipsImage getrows];
  xpos = 150.0;
  ypos = 800.0 - (double)ysize;
  NXSetRect(&temprect,xpos,ypos,(double)xsize,(double)ysize);
  thiswindow = [Window 
                newContent: &temprect
                style: NX_TITLEDSTYLE
	        backing: NX_RETAINED
	        buttonMask: NX_CLOSEBUTTONMASK | NX_MINIATURIZEBUTTONMASK | 
                            NX_RESIZEBUTTONMASK
	        defer: NO ];
  sprintf(tstring,"Image: %s",file);
  [thiswindow setTitle: tstring];
  [thiswindow orderFront: nil];
  [thiswindow display];
  NXPing();
  [[thiswindow setContentView: self] free];
  [thiswindow display];
}



-drawSelf: (const NXRect *)rects : (int)rectCount
{
  [self getFrame: &temprect];
  temprect.origin.x = 0.0;
  temprect.origin.y = 0.0;
  [self lockFocus];
  NXImageBitmap(&temprect,			// Rect
                xsize,				// pixelsWide
                ysize,				// pixelsWide
                [hipsImage getbits_per_pixel],	// bps (bits per sample)
                1,				// spp (samples per pixel)
                NX_MESHED,			// config
                NX_MONOTONICMASK,		// mask
                [hipsImage getdata],		// data1
                NULL,				// data2
                NULL,				// data3
                NULL,				// data4
                NULL);				// data5
  [self unlockFocus];
  return self;
}




-free
{
  [hipsImage free];
  [super free];
}
@end



