/* 
    TVscreen Widget for Bt848 frame grabber driver

    Copyright (C) 1996,97 Marcus Metzler (mocm@thp.uni-koeln.de)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

/* 
 * TVscreenP.h - Private definitions for TVscreen widget
 */

#ifndef _TVscreenP_h
#define _TVscreenP_h

/*
 * Include public header file for this widget.
 */
#include <stdlib.h>
#include <sys/types.h>
typedef unsigned int u32;

#include <sys/ioctl.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <X11/Xlib.h>
#include <X11/IntrinsicP.h>
#include <X11/ObjectP.h>
#include <X11/StringDefs.h>
#include <X11/Xatom.h>
#include <stdio.h>

#ifndef NOCARD  
#include "../../driver/videodev.h"
#include "../../driver/bttv.h"
#endif

#include "visual.h"
#include "TVscreen.h"

#ifdef __cplusplus
extern "C" {
#endif


/* New fields for the TVscreen widget class record */

typedef struct {
	int make_compiler_happy;	/* keep compiler happy */
} TVscreenClassPart;



/* Full class record declaration */
typedef struct _TVscreenClassRec {
    CoreClassPart	core_class;
    TVscreenClassPart	tvscreen_class;
} TVscreenClassRec;

extern TVscreenClassRec tvscreenClassRec;

/* New fields for the TVscreen widget record */
typedef struct {
  /* resources */
  char *devname;
  Boolean CAP_ON;
  int NORM;
  int FREQ;
  int INPUT;
  int DELAY;
  int Bright;
  int Color;
  int Hue;
  int Contrast;
  Boolean REFRESH;
  int bpp;
  char *visname;
  Boolean snap;
  int audio;
  /* private state */
#ifndef NOCARD
  struct video_window vwin;
  struct video_buffer vbuf;
  struct video_tuner vtuner;
  ulong frequency;
  struct video_clip cliprecs[200];
  unsigned char *TargetMem;
  struct video_mbuf mbuf;
#endif
  int fbttv;
  uint max_width;
  uint max_height;
  Boolean Change;
  Boolean Fresh;
  Boolean dual;
  Visual *visual;
  XColor colors[256];
  int realw;
  int aspect;
  Boolean CMSET;
  int audio_state;
} TVscreenPart;

/*
 * Full instance record declaration
 */
typedef struct _TVscreenRec {
    CorePart		    core;
    TVscreenPart	    TVscreen;
} TVscreenRec;

#ifdef __cplusplus
}
#endif

#endif /* _TVscreenP_h */
